Как получить от PHP-FPM код ошибки, отличный от 200, при PHP Fatal error?

Дано: Nginx 1.4.1, PHP-FPM 5.3.27

При возникновении в PHP фатальной ошибки вебсервер возвращает текст ошибки и код 200.



Окей, прописываем в nginx по советам лучших собаководов:

fastcgi_catch_stderr «PHP Fatal error:»;



Теперь при фатальной ошибке возвращается код 502 Bad Gateway, но на этот раз текста ошибки нет.



Нужно: возвращать ошибочный код и выводить саму ошибку в браузер, как это делает апач. Если вдобавок можно будет сменить код 502 на что-то более вменяемое, будет совсем хорошо.
  • Вопрос задан
  • 4855 просмотров
Пригласить эксперта
Ответы на вопрос 6
Уж не этот ли баг словлен?
Ответ написан
kenny_opennix
@kenny_opennix
Не совсем понятно чего Вы хотите, если свои error page то nginx.org/ru/docs/http/ngx_http_core_module.html#error_page
Или вы про fastcgi_intercept_errors спрашиваете?
Если про эту опцию, то достаточно указать fastcgi_intercept_errors on;
Ответ написан
kenny_opennix
@kenny_opennix
То что вы хотите обычно на стороне фреймверков осуществляется. допустим такое поведение yii представляет, на стороне nginx отключаются страницы ошибок и yii генерирует страницу ошибок.
Ответ написан
@russianlagman
Напиши хендлер для фатал эррора, который будет отдавать и текст, и правильный код ошибки: www.php.net/set-error-handler
Подключается хендлер к любому файлу директивой auto_prepend_file.
Ответ написан
kenny_opennix
@kenny_opennix
php_flag[display_errors] = on
включены в fpm?
У меня связка nginx+php-fpm и ошибки вида
Parse error: syntax error, unexpected T_STRING in
Выводятся.
Ответ написан
Arks
@Arks
Данная ошибка должна решаться на стороне nginx. В дефолтном поведении все честно — ему бэкенд отдал текст(html) — он честно вернул ответ 200.
Как, тоже гадаю, к сожалению((
Впрочем кастомный обработчик ошибок в php это хоть и костыль — но вполне себе решение для php-fpm.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы