Как настроить PHP-FPM через NGINX для записи в файлы журналов для каждого виртуального хоста

11

У меня есть Fedora 16 с Nginx и PHP-FPM. Все работает очень хорошо. Все журналы с уведомлениями PHP, предупреждениями, ошибками и т. Д. Находятся в /var/log/php-fpm/www-error.log.

Есть ли способ настроить PHP-FPM для записи ошибок в надлежащие файлы журналов, настроенные как журналы ошибок для Nginx? Поэтому я хочу регистрировать ошибки PHP для каждого виртуального хоста, а не в одном глобальном файле. (как в Apache Httpd и PHP).

B14D3
источник

Ответы:

14

Директива PHP-FPM: catch_workers_output = yes вызовет ошибки, которые PHP отправляет в stdout / stderr для отправки обратно в nginx, и они будут зарегистрированы.

В PHP 5.2.4 и новее директива display_errors больше не является логическим значением, но будет принимать 'stderr' в качестве опции. Это должно привести к тому, что все ошибки вернутся к nginx и будут зарегистрированы для каждого vhost.

Итак, в вашей конфигурации PHP-FPM:

php_admin_value[display_errors] = 'stderr'

Другой вариант - директива:

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

это то, что вы, вероятно, используете сейчас. php-fpm.conf поддерживает некоторые переменные, такие как $ pool (который для вас, скорее всего, вернет 'www').

Если у вас более одного пула, вы можете легко регистрировать их отдельно.

Из быстрого просмотра исходного кода все выглядит так, будто $ pool - единственная такая переменная.

Аллан Джуд
источник
1
Хм, кажется, есть некоторые проблемы сdisplay_errors="stderr" . Вы проверяли это, чтобы работать?
Pacerier