Próbuję dowiedzieć się, dokąd idą błędy PHP w mojej konfiguracji. Używam nginx jako odwrotnego proxy do PHP-FPM, ale nie widzę różnych komunikatów E_NOTICE lub E_WARNING, które generuje moja aplikacja. Jedynym powodem, dla którego wiem, że się zdarzają, są nieudane odpowiedzi i ślady stosu NewRelic.
Oto konfiguracja logowania:
nginx.conf
proxy_intercept_errors on;
fastcgi_intercept_errors on;
php.ini
error_reporting = E_ALL
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = On
error_log = syslog
php-fpm.conf
[global]
error_log = /var/log/php-fpm/fpm-error.log
[www]
access.log = /var/log/php-fpm/access.log
access.format = "%t \"%m %r%Q%q\" %s %{mili}dms %{kilo}Mkb %C%%"
catch_workers_output = yes
php_flag[display_errors] = on
php_admin_flag[log_errors] = true
rsyslog.conf
:syslogtag, contains, "php" /var/log/php-fpm/error.log
Skonfigurowałem PHP do logowania do syslog, jednak FPM nie ma funkcji syslog, więc loguje się do pliku. Naprawdę nie dbam o to, gdzie błędy się kończą, tylko o to, że gdzieś się kończą.
Jakieś wskazówki, jak mogę to uruchomić?
Odpowiedzi:
Zgodnie z plikiem konfiguracyjnym FPM obsługuje wysyłanie błędów do syslog.
źródło
Czy jesteś pewien swoich założeń dotyczących pliku rsyslog.conf? Czy na pewno wszystkie takie wiadomości syslog są oznaczone małymi literami „php”?
Spróbuj ustawić syslog.facility na coś takiego jak local2 (lub local1 lub local7) i odpowiednio zamień linię konfiguracyjną rsyslog.conf:
źródło
Gdy używasz php-fpm, wydaje się, że zastępuje
php.ini
ustawienia.Logowanie najprawdopodobniej wymaga konfiguracji
.../www.conf
.Odkomentowałem te linie, aby pobrać dzienniki PHP.
W tym pliku można również znaleźć użytkownika i grupę serwera WWW w liniach podobnych do tego (może różnić się w zależności od konfiguracji gniazda i proxy Unix).
Następnie wystarczy tylko utworzyć plik i odpowiednio go skonfigurować.
Uważam, że poziom logowania jest nadal używany,
php-fpm.conf
więc może być konieczne sprawdzenie tego.źródło