So konfigurieren Sie PHP-FPM über NGINX zum Schreiben in Protokolldateien pro virtuellem Host


11

Ich habe Fedora 16 mit Nginx und PHP-FPM. Alles funktioniert sehr gut. Alle Protokolle mit PHP-Hinweisen, Warnungen, Fehlern usw. sind in /var/log/php-fpm/www-error.log.

Gibt es eine Möglichkeit, PHP-FPM so zu konfigurieren, dass Fehler in ordnungsgemäße Protokolldateien geschrieben werden, die als Fehlerprotokolle für Nginx konfiguriert sind? Ich möchte also PHP-Fehler pro virtuellem Host und nicht in einer globalen Datei protokollieren . (wie in Apache Httpd und PHP).

Antworten:


14

Die PHP-FPM-Direktive: catch_workers_output = yes führt dazu, dass Fehler, die PHP an stdout / stderr sendet, an nginx zurückgesendet und protokolliert werden.

In PHP 5.2.4 und neueren Versionen ist die Direktive display_errors kein Boolescher Wert mehr, akzeptiert jedoch 'stderr' als Option. Dies sollte dazu führen, dass alle Fehler auf nginx zurückgehen und pro vhost protokolliert werden.

Also in Ihrer PHP-FPM-Konfiguration:

php_admin_value[display_errors] = 'stderr'

Ihre andere Option ist die Richtlinie:

php_admin_value[error_log] = /var/log/fpm-php.www.log

Welches ist, was Sie jetzt wahrscheinlich verwenden. Die php-fpm.conf unterstützt einige Variablen, wie $ pool (was für Sie wahrscheinlich 'www' zurückgeben wird).

Wenn Sie mehr als einen Pool haben, können Sie diese problemlos separat protokollieren.

Nach einem kurzen Durchsuchen des Quellcodes sieht es jedoch so aus, als wäre $ pool die einzige solche Variable.


1
Hmm, es scheint ein Problem mit zu gebendisplay_errors="stderr" . Haben Sie es getestet, um zu funktionieren?
Pacerier
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.