nginx / php-fpm журнал помилок


16

Я намагаюся розібратися, куди йдуть помилки PHP у моїй установці. Я запускаю nginx як зворотний проксі для PHP-FPM, але я не бачу різних повідомлень E_NOTICE або E_WARNING, які виробляє моя програма. Єдина причина, з якої я знаю, що вони трапляються, - це невдалі відповіді та сліди стека NewRelic.

Ось конфігурація журналу:

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

Я налаштував PHP для входу в syslog, однак у FPM немає функції syslog, тому він входить у файл. Мені не цікаво, де закінчуються помилки, лише те, що вони десь закінчуються.

Будь-які підказки про те, як я можу змусити це працювати?


Я б спробував спершу відобразити помилки (у файлі test.php ви можете вручну викликати помилку), потім вставте їх у файл і так далі .... Можливо, помилки викликаються з cli, використовуючи інший php.ini
adrian7

Ви пробували це? php_admin_value [error_log] = /var/log/php-fpm/www-error.log php_admin_flag [log_errors] = on
Ghasem Pahlavan

Відповіді:


5

Відповідно до конфігураційного файлу FPM підтримує помилки надсилання у syslog.

; Error log file
; If it's set to "syslog", log is sent to syslogd instead of being written
; in a local file.
; Note: the default prefix is /var
; Default Value: log/php-fpm.log
error_log = syslog

; syslog_facility is used to specify what type of program is logging the
; message. This lets syslogd specify that messages from different facilities
; will be handled differently.
; See syslog(3) for possible values (ex daemon equiv LOG_DAEMON)
; Default Value: daemon
;syslog.facility = daemon

; syslog_ident is prepended to every message. If you have multiple FPM
; instances running on the same server, you can change the default value
; which must suit common needs.
; Default Value: php-fpm
;syslog.ident = php-fpm

; Log level
; Possible Values: alert, error, warning, notice, debug
; Default Value: notice
;log_level = notice

1

Ви впевнені в своєму припущенні для rsyslog.conf? Тобто ви впевнені, що всі подібні повідомлення в системі позначені малими "php"?

Спробуйте встановити syslog.facility на щось на зразок local2 (або local1, або local7) та замініть відповідну конфігураційну лінію rsyslog.conf:

local2.* /var/log/php-fpm/error.log

1

Коли ви використовуєте php-fpm, схоже, це перекриває php.iniналаштування.

Ведення журналу, швидше за все, має бути налаштовано .../www.conf.

Я коментував ці рядки для того, щоб схопити журнали PHP.

php_admin_value[error_log] = /var/log/php-errors.log
php_admin_flag[log_errors] = on

Користувача та групи веб-сервера також можна знайти у цьому файлі під подібними до цього рядками (можуть відрізнятися між Unix socket та конфігурацією проксі).

listen.owner = www-data
listen.group = www-data

Тоді лише питання створення файлу та його правильної настройки.

touch /var/log/php-errors.log
chmod 644 /var/log/php-errors.log
chgrp www-data /var/log/php-errors.log
chown www-data /var/log/php-errors.log

Я вважаю, що рівень журналу досі використовується, php-fpm.confтому вам може знадобитися перевірити це.

log_level = error
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.