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.
Der Standardwert für error_log ist kein Wert
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:
-
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 .
-
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.
-
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.
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 odersudo
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.1 Stimmen
Für mich ist das ziemlich seltsam... Ich habe eine gehostete Website und PHP-Protokolle sind in der gleichen Datei wie Apache-Protokolle gespeichert... In meiner Verwaltungskonsole gibt es unter "Logs" die Option, das komplette Apache-Fehlerprotokoll anzuzeigen. Wenn ich darauf klicke, werden Fehler angezeigt, z. B. wenn Benutzer Orte eingeben, die sie nicht betreten sollten. Aber, auch in die gleiche Datei gibt es Fehler, die PHP anzeigt.
0 Stimmen
@soaku Wenn Sie fastcgi verwenden, führt Apache selbst kein PHP aus. Wenn Sie mod_php verwenden, das ein Apache-Modul ist, kümmert sich Apache um PHP. Das bedeutet, dass bei der Verwendung von mod_php Fehler in den Apache-Protokollen erscheinen können und wahrscheinlich auch werden, was bei der Verwendung von cgi oder fastcgi nicht der Fall sein wird.
0 Stimmen
Dort gefunden: /var/log/php-fpm/www-error.log (Centos 8 Standardinstallation mit Standard-Apache und remi php 7.4.2)
0 Stimmen
Eine ähnliche Frage ist Ermitteln Sie den Pfad des error_logs .