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).

B14D3
quelle

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.

Allan Jude
quelle
1
Hmm, es scheint ein Problem mit zu gebendisplay_errors="stderr" . Haben Sie es getestet, um zu funktionieren?
Pacerier