Wie protokolliere ich den PHP-Fehler in einer separaten Datei?

Ich habe gerade ein Upgrade meines Servers auf Fedora 17 durchgeführt und einige Konfigurationsdateien mit .rpmnew in die vorhandenen Dateien eingefügt. Ich habe meine PHP-Fehler erfolgreich in einer separaten Protokolldatei protokolliert, indem ich Folgendes in php.ini gespeichert habe:

log_errors = On
error_log = /var/log/php-errors.log

Ich bin mir nicht sicher, warum die Fehler nach dem Upgrade bei /var/log/httpd/error_log protokolliert werden, obwohl die obigen Einstellungen beibehalten wurden.

Auch

$ ls -l /var/log/php-errors.log
-rwxrwxr--. 1 apache myself 232 Dec 13 16:49 /var/log/php-errors.log

Zeigt, dass Apache die PHP-Fehlerprotokolldatei besaß.

Was könnte sein verursacht PHP-Fehler in Apache Fehlerprotokolldatei angemeldet werden?

Author: Question Overflow, 2012-12-17

1 answers

Ich denke, dass hier nur die generischen Apache-Fehler in /var/log/httpd/error_log zu sehen sind.

Ich würde einen Aufruf von error_log('test'); in eine PHP-Logik einfügen, von der bekannt ist, dass sie interpretiert wird, wenn eine bestimmte Seite aktualisiert wird, und wenn dies in /var/log/php-errors.log nicht zu sehen ist, würde ich vermuten, dass die Versionen aktualisiert wurden, um eine Art anderes Konfigurations-oder Berechtigungsschema zu haben, durch das die alte Konfiguration nicht mehr funktioniert.

Ich würde empfehlen, den Abschnitt "Fehlerbehandlung und Protokollierung" in /etc/php/php.ini zu durchlaufen, und überprüfen auf korrekte Werte für andere Direktiven. Die Direktive error_reporting sollte auf E_ALL oder E_ALL & ~E_DEPRECATED & ~E_STRICT gesetzt werden. Die Direktive log_errors sollte On sein.

Wenn nur ein Dateiname (aber kein Pfad) für error_log angegeben ist, wird die Datei im selben Verzeichnis wie das PHP-Skript angezeigt, das error_log(...) aufruft.

Ich würde auch empfehlen, /tmp/php_error_log für error_log anzugeben, die Seite zu aktualisieren und dann ls /tmp, um zu sehen, ob die Datei vorhanden ist.

Wenn die Datei nicht vorhanden ist, melden Sie sich als root an und suchen Sie nach der Dateiname über das gesamte Dateisystem so sehen, wo es endete.

Im Allgemeinen ändert sich die richtige Konfiguration, um das PHP-Fehlerprotokoll in einem bestimmten Verzeichnis zum Laufen zu bringen, in verschiedenen Versionen von Apache, PHP und verschiedenen Distributionen.

Ich kann sagen, dass unter Arch Linux mit Apache 2.4, PHP 5.5.11 und systemd Version 212-1 die obige Konfiguration dazu führt, dass das PHP-Fehlerprotokoll irgendwo ähnlich wie /tmp/systemd-private-65d4c3e3cc534155bcf3ec708c2362f6-httpd.service-h8MSsD/tmp/php_error_log endet.

 0
Author: maratbn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-04-05 01:36:58