477 Stimmen

Wo speichert PHP das Fehlerprotokoll? (PHP 5, Apache, FastCGI, und cPanel)

Ich verwende Shared Hosting und habe cPanel , Apache und PHP wird von FastCGI . Wo speichert PHP das Fehlerprotokoll?

Gibt es eine andere Möglichkeit, wie ich das Fehlerprotokoll in einer gemeinsam genutzten Hosting-Umgebung finden kann, anstatt die gesamte Website-Struktur zu durchsuchen, um nach fehler_protokoll Dateien?

Ich habe Zugang zu den php.ini Datei (ich verwende PHP Version 5.2.16).

40 Stimmen

Unter Linux wird entweder /var/log/httpd/error_log o /var/log/apache2/error.log . Diese Dateien sind Eigentum von Root, also müssen Sie Root sein oder sudo um sie zu sehen oder zu lesen.

135 Stimmen

php --info | grep error

14 Stimmen

Für diejenigen, die eine Windows-Lösung suchen, verwenden Sie php --info | findstr /r /c:"error_log" um zu sehen, wo sich die Protokolldatei befindet.

5voto

Thomas Bennett Punkte 647

Am besten schauen Sie in Ihrem httpd.conf und sehen Sie nach, was die Standardeinstellung ist. Sie könnte auch von Ihrem spezifischen virtuellen Host überschrieben werden. Ich beginne mit einem Blick auf /etc/httpd/conf/httpd.conf o /etc/apache2/httpd.conf und suchen Sie nach error_log. Es könnte entweder als /var/log/httpd/error_log oder /var/log/apache2/error_log aber es könnte auch einfach als logs/error_log .

In diesem Fall handelt es sich um einen relativen Pfad, d. h. er befindet sich unter /etc/httpd/logs/error_log . Wenn Sie es immer noch nicht finden können, überprüfen Sie den Boden Ihres httpd.conf Datei und sehen Sie nach, wo Ihre virtuellen Hosts enthalten sind. Möglicherweise ist sie in /etc/httpd/conf.d/ <- als "andere" oder "extra". Ihr virtueller Host könnte es dann mit ErrorLog "/path/to/error_log" überschreiben.

5voto

Abhishek Punkte 2353

Wenn Sie Apache und PHP aus dem Quellcode erstellt haben, dann werden die Fehlerprotokolle standardmäßig in Ihrem ${Apache install dir}/logs/error_log d.h. im Allgemeinen /usr/local/apache2/logs/error_log .

Andernfalls, wenn Sie es aus dem Repository installiert haben, finden Sie es unter /var/log/apache2/error_log .

Sie können den Pfad in Ihrem php.ini und überprüfen Sie es durch den Aufruf von phpinfo() .

4voto

Dan Allen Punkte 46

Ich kann Ihnen garantieren, dass ich nicht der Einzige bin, der bei der frustrierenden Suche nach einer Protokolldatei mindestens einmal in den Wahnsinn getrieben wurde. Es scheint, als ob sie im ganzen System am leichtesten zu finden sein sollte.

Eine endgültige Anleitung, wo das PHP-Fehlerprotokoll gespeichert wird, wäre eine komplizierte Angelegenheit. Das offizielle PHP-Handbuch versucht nicht einmal, das ganze Thema anzusprechen, da es Abhängigkeiten von Systemen außerhalb von PHP gibt, wie z.B. dem Betriebssystem (Linux vs. Windows, welche Linux-Distribution), einschließlich Einstellungen innerhalb von Windows und Linux, die den Namen und den Speicherort des PHP-Fehlerprotokolls beeinflussen.

Solange sich niemand die Zeit nimmt, eine vollständige, systemübergreifende Anleitung zu schreiben, werden Sie bestenfalls allgemeine Hinweise bekommen, wo Sie nachfragen können. Jeder PHP-Entwickler hat bei dieser Suche Qualen ertragen müssen, mit einer Ausnahme. Wenn man an einem Ort arbeitet und die Informationen zur Verfügung gestellt bekommt, wenn man sie zum ersten Mal braucht, dann hat man den Informationsbedarf für immer, das heißt, bis man sich in einer neuen Arbeitsumgebung wiederfindet. Es gibt solche glücklichen Menschen.

Wenn Ihnen die Informationen nicht auf dem Silbertablett serviert werden, müssen Sie sich auf die Suche machen. Die Jagd ist nicht die längste, aber auch nicht die einfachste, die Sie in Ihrer Laufbahn zu bewältigen haben werden.

Wie aus den zahlreichen Antworten hervorgeht, ist es sinnvoll, mit der Ausgabe von phpinfo() . Um sie anzuzeigen, erstellen Sie eine PHP-Datei, die dies enthält:

<?php
    phpinfo();

Suchen Sie entweder nach dieser Datei oder führen Sie sie über die Befehlszeile aus. Wenn Sie beides tun, werden Sie wahrscheinlich die fehler_protokoll befindet sich an verschiedenen Stellen, je nachdem, ob PHP auf der Kommandozeile oder auf dem Webserver verwendet wird. Das liegt daran, dass der PHP-Interpreter, der auf einem Webserver läuft, nicht derselbe PHP-Interpreter ist, der von der Kommandozeile aus läuft, selbst wenn die Kommandozeile auf demselben Rechner wie der Webserver ist. Die Antworten, die hier bereits gepostet wurden, gehen meist von der unausgesprochenen Annahme aus, dass PHP als Teil eines Webservers läuft.

Sample output from phpinfo() via web server and web browser

Der Standardwert für error_log ist kein Wert

Default error_log in php running as an Apache mod.

Welcher Wert auch immer es ist, er kommt von der php.ini Dateien, die zur Konfiguration von PHP verwendet werden. Es können viele sein php.ini Dateien. Es ist anfangs etwas verwirrend, sich in diesen Dateien zurechtzufinden, aber das ist nicht nötig, um Ihr PHP-Protokoll zu finden.

Wenn die Ausgabe von phpinfo() einen vollständigen Pfad zu einer Datei anzeigt, befindet sich das Protokoll dort. Sie haben Glück.

Der Trick ist, dass in phpinfo() normalerweise kein vollständiger Pfad angegeben ist. Wenn es keinen vollständigen Pfad gibt, hängt der Ort davon ab:

  1. Ob error_log ist kein Wert . Wenn dies der Fall ist, hängt der Speicherort der Protokolldatei vom Betriebssystem und dem Modus ab, in dem PHP läuft. Wenn PHP als Apache-Modul läuft, befindet sich die Protokolldatei unter Linux oft in /var/log/apache2/error.log . Ein anderer wahrscheinlicher Ort ist das Logs-Verzeichnis in Ihrem Home-Verzeichnis des Kontos, ~/logs/error.log .

  2. Wenn es einen Dateinamen ohne Pfad gibt, hängt der Speicherort davon ab, ob der Dateiname den Wert syslog . Wenn es syslog dann wird das PHP-Fehlerprotokoll in das Syslog des Servers eingespeist, das je nach Linux-Distribution unterschiedlich ist. Ein üblicher Ort ist /var/log/syslog aber es kann überall sein. Selbst der Name des Syslogs variiert je nach Distribution.

  3. Wenn der Name ohne Pfadangabe nicht syslog ist, wird die Datei häufig im Document Root der Website abgelegt (auch bekannt als Home-Verzeichnis der Website, nicht zu verwechseln mit dem Home-Verzeichnis Ihres Accounts).

Dieser Spickzettel hat sich in einigen Situationen als hilfreich erwiesen, aber ich muss leider zugeben, dass er nicht annähernd universell ist. Sie haben mein Beileid.

Enter image description here

4voto

cfphpflex Punkte 565

Wo immer Sie es wollen, wenn Sie es in Ihrem Funktionsaufruf festlegen:

error_log($errorMessageforLog . "\n", 4, 'somePath/SomeFileName.som');

3voto

Dewlance Punkte 361

cPanel Fehlerprotokolle befinden sich in:

  • /usr/local/cpanel/logs/

  • /usr/local/apache/logs/

Standardmäßig befinden sich die Apache-Protokolle darin:

  • /var/log/apache

o

  • /var/log/apache2

Wenn jemand einen benutzerdefinierten Protokollspeicherort verwendet, können Sie dies mit diesem Befehl überprüfen:

cat /etc/apache2/**conf**/httpd.conf | grep ErrorLog

Wenn Sie eine Fehlermeldung erhalten, dass die Apache2 Verzeichnis nicht vorhanden ist, können Sie diesen Befehl ausführen, um den richtigen Speicherort zu finden:

whereis apache

o

whereis apache2

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X