FastCGI не хочет правильно регистрировать ошибки PHP. Ну, это не совсем так: он записывает ошибки в порядке, с небольшим ворчанием; он просто ничего не записывает, например предупреждения.Nginx + FastCGI + PHP (php-fpm) не регистрирует пойманные ошибки/предупреждения
Печально известная ошибка журнала FastCGI -> Nginx не является проблемой, обязательно. Ошибки и предупреждения от php-fpm идут прямо к Nginx - но только если они не пойманы. То есть, если set_error_handler
успешно перехватывает ошибку, запись в журнал не добавляется. Это означает, что я могу видеть ошибки разбора, но это все.
php-fpm не регистрирует ошибки PHP самостоятельно (отдельно от nginx) без какого-либо взлома. Файл конфигурации экземпляра PHP-FPM включает в себя эти две строки по умолчанию:
php_admin_value[error_log] = /mnt/log/php-fpm/default.log
php_admin_flag[log_errors] = on
Я изменил error_log путь, очевидно. Я должен добавить следующую строку, чтобы получить это на самом деле ничего войти:
php_admin_value[error_reporting] = E_ALL & ~E_DEPRECATED & ~E_STRICT
Версия Примечание: E_STRICT часть не нужна, так как я использую PHP 5.3.27, но я планирую на модернизацию до 5.4 в некоторых точка. С помощью этой строки он регистрирует ошибки - и только ошибки - до /mnt/log/php-fpm/default.log
. Теперь это устанавливает error_reporting
в то же значение, которое я установил в php.ini, поэтому здесь что-то явно не так. Кроме того, он не регистрирует ошибки ловушки: поведение идентично поведению журнала nginx. Вместо этого я попытался использовать числовое значение (22527), но все равно не повезло.
Мне все равно, в каком файле журнала записываются записи (nginx versus php-fpm), но мне нужны пойманные ошибки, которые будут где-то зарегистрированы. Я мог бы прибегнуть к тому, чтобы вводить собственные ошибки и обработчики исключений, но это немного хаки, поэтому я бы предпочел избежать этого.
ли я с ума, вспоминая, что Apache не имеют этой проблемы? – Zenexer