Jak skonfigurować PHP-FPM przez NGINX, aby zapisywał pliki dziennika dla poszczególnych hostów wirtualnych

11

Mam Fedorę 16 z Nginx i PHP-FPM. Wszystko działa bardzo dobrze. Wszystkie logi z powiadomieniami PHP, ostrzeżeniami, błędami itp. Są w /var/log/php-fpm/www-error.log.

Czy istnieje sposób skonfigurowania PHP-FPM do zapisywania błędów w odpowiednich plikach dziennika skonfigurowanych jako dzienniki błędów dla Nginx? Chcę więc rejestrować błędy PHP dla hosta wirtualnego, a nie w jednym pliku globalnym. (jak w Apache Httpd i PHP).

B14D3
źródło

Odpowiedzi:

14

Dyrektywa PHP-FPM: catch_workers_output = yes spowoduje błędy PHP wysyłane do stdout / stderr, które zostaną odesłane z powrotem do nginx, i zostaną zarejestrowane.

W PHP 5.2.4 i nowszych dyrektywa display_errors nie jest już wartością logiczną, ale zaakceptuje 'stderr' jako opcję. To powinno spowodować, że wszystkie błędy powrócą do nginx i zostaną zalogowane na vhost.

W konfiguracji PHP-FPM:

php_admin_value[display_errors] = 'stderr'

Inną opcją jest dyrektywa:

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

z czego prawdopodobnie korzystasz teraz. php-fpm.conf obsługuje niektóre zmienne, takie jak $ pool (która prawdopodobnie zwróci „www”).

Jeśli masz więcej niż 1 pulę, możesz łatwo zalogować je osobno.

Po szybkim przejrzeniu kodu źródłowego wygląda na to, że $ pool jest jedyną taką zmienną.

Allan Jude
źródło
1
Hmm, wydaje się, że jest jakiś problemdisplay_errors="stderr" . Czy przetestowałeś go do pracy?
Pacerier