Ich lief phpinfo()
und die error_log Direktive sagt einfach error_log
. Auf welche Datei bezieht sich das? d. h. was wäre der vollständige Pfad zum error_log?Wo werden PHP-Fehler protokolliert, wenn die Anweisung error_log einfach "error_log" sagt?
Antwort
Datei Öffnen Sie Ihre php.ini
Dies sollte bekommen haben Downvoted nicht, weil diese richtige Verwendung ist, wie beabsichtigt. Die Leute sollten die Werkzeuge so verwenden, wie sie vorgesehen sind, und nur dann ihre eigene Lösung aufdrehen, wenn sie nicht zugänglich oder nicht verfügbar ist. Es gibt zu viele Leute auf dieser Seite, die annehmen, dass es automatisch falsch ist, nur weil es ihr spezifisches Problem (und alle damit verbundenen, aber nicht gemeldeten Probleme) nicht gelöst hat. Das ist nicht falsch, und wenn es nicht funktioniert, ist Ihr Server schlecht eingerichtet, was Ihr wirkliches Problem ist. – mopsyd
Ich würde hinzufügen, dass Protokolle auch in der apache.conf oder vhost.conf auch definiert werden können. – mopsyd
Quote from the documentation den Weg gegen error_log Check:
error_log String
Name der Datei in dem Skriptfehler sollten angemeldet sein. Die Datei sollte vom Benutzer des Webservers beschreibbar sein. Wenn der spezielle Wert syslog verwendet wird, werden die Fehler stattdessen an die Systemprotokollierung gesendet. Unter Unix bedeutet dies syslog (3) und unter Windows NT das Ereignisprotokoll . Die Systemprotokollfunktion wird unter Windows 95 nicht unterstützt. Siehe auch: syslog(). Wenn diese Anweisung nicht gesetzt ist, werden Fehler an den SAPI Fehlerlogger gesendet. Zum Beispiel ist es ein Fehlerprotokoll in Apache oder stderr in CLI.
Also, wenn der Wert nicht gesetzt ist (das ist die Standardeinstellung) wird an die Mutterfehlerlogger gesendet werden, die Apache (wenn über sie laufen) oder stderr
, wenn Sie das Skript auf der Kommandozeile .
Wenn Sie das Skript über Apache verwenden, müssen Sie sich das Apache-Fehlerprotokoll ansehen, normalerweise in /var/log/apache
oder /var/log/httpd
, abhängig von Ihrer Distribution. Sie können die Apache-Konfigurationsdatei für den genauen Standort überprüfen.
Edit:
Ich habe gerade bemerkt falsch verstehe ich Ihre Frage, ich denke du meinst error_log
error_log
den Ist-Wert hat?
Ich habe gerade ein paar Tests gemacht. Wenn ich error_log
auf einen Wert wie php_errors.log
setze, schreibt PHP die Fehlermeldungen immer noch in das Apache-Fehlerprotokoll. Es verhält sich, als wäre der Wert leer. Wenn ich den Wert auf einen vollständigen Pfad einstelle (z. B. /tmp/php_errors.log
), schreibt er die Fehler in die angegebene Datei.
Also ich denke, in Ihrem Fall schreibt es die Fehler in die Apache-Fehlerprotokolldatei.
Natürlich können Sie Ihre eigenen Protokolldatei
ini_set("error_log", "/tmp/php_errors.log");
auf Ihre PHP-Dateien, wo Sie es brauchen gesetzt Hinzufügen (wenn es nicht von einem Administrator deaktiviert wurde).
gibt es kein '/ apache' in'/var/log'. aber es gibt ein 'error_log' in'/usr/local/apache/logs', aber es scheint keine PHP-Fehler zu zeigen. Wenn ich meine PHP-Seite starte, bekomme ich einen leeren Bildschirm und ich möchte den Syntaxfehler wissen. 'display_errors' ist in' php.ini' ausgeschaltet. – Ryan
sollten Sie 'display_errors' in Ihrer PHP-Datei selbst aktivieren können. Fügen Sie einfach 'ini_set (" display_errors ", 1);' am Anfang hinzu. –
prächtige Idee Freund – Ryan
Wenn der Wert einfach sagt error_log
(oder error_log = error_log
in Ihrer php.ini
-Datei), die die Fehler bedeutet, dass zu einer error_log
im gleichen Verzeichnis, das der Fehler auftritt genannte Datei geschrieben werden.
Also, wenn Sie eine Datei index.php
in /home/user/public_html/ genannt, die einen Fehler wirft, wird der Fehler geschrieben werden: /home/user/public_html/error_log.
Wenn Sie Datei resize.php
in /home/user/public_html/admin/images/ genannt haben, die einen Fehler wirft, dann werden die Fehler geschrieben werden: /home/user/public_html/admin/images/error_log
Quelle: Display and log errors for PHP
das OS ist linux – Ryan