Назад | Перейти на главную страницу

Отображение фатальных ошибок в Nginx в браузере

Во время разработки у меня в браузере появляются пустые страницы всякий раз, когда я создаю фатальную ошибку в PHP с опечаткой или просто из-за моего плохого программирования;). Мне очень неприятно просматривать необработанный файл журнала ошибок nginx, чтобы увидеть фатальные ошибки и найти номера строк, где они находятся. Кажется, я не могу найти, как заставить nginx отображать фатальные ошибки PHP в браузере. Вот соответствующая часть моей конфигурации nginx:

location @fpm {
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_NAME index.php;
    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
    fastcgi_param PATH_INFO $path_info;
}

Вот пример ошибки, которая появляется в моем журнале ошибок, а затем приводит к пустой странице браузера:

2014/01/04 14:53:52 [error] 20082#0: *403 FastCGI sent in stderr:
"PHP message: PHP Fatal error:  Cannot redeclare class ClassName in FilePath on line 356"
while reading response header from upstream, client: 192.168.1.10,
server: servername, request: "GET URLPATH HTTP/1.1",
upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "host",
referrer: "referer"

Вот моя информация о PHP:

Вот моя конфигурация PHP-FPM:

http://pastebin.com/QkCTbBYj

И мой пул PHP-FPM conf:

http://pastebin.com/TZfZ8d7G

И мой PHP-FPM php.ini:

http://pastebin.com/RsXRxduf

Я был бы рад, если бы кто-нибудь мог пролить свет на то, что я могу сделать, чтобы эти ошибки проявились!

В конфигурации пула PHP-FPM раскомментируйте

строка 463 php_flag[display_errors] = off

и измените его на

php_flag[display_errors] = on

и не забудьте перезапустить php-fpm

Я подумал, что нашей настройки display_errors было недостаточно для отображения ошибок с помощью nginx.

Последней уловкой для решения этой проблемы было отключение fastcgi_intercept_errors:

fastcgi_intercept_errors off;

Обычно это включено по умолчанию, например, в fastcgi_params.