Nginx отправляет статус 200 после ошибки разбора PHP - PullRequest
2 голосов
/ 25 апреля 2011

Я настроил nginx с php-fpm в Ubuntu (и все работает довольно хорошо).

Одна вещь, с которой я столкнулся, это то, что код состояния HTTP 200 отправляется, когда происходит ошибка синтаксического анализа PHP. Журнал ошибок содержит следующую запись:

[ошибка] 3205 # 0: * 2854 FastCGI отправлено в stderr: «Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданный T_REQUIRE_ONCE в /var/www/.../index.php в строке 32» при чтении заголовка ответа из апстрима клиент: 1.2.3.4, сервер: example.com; запрос: «GET / HTTP / 1.1», восходящий поток: «fastcgi: //127.0.0.1: 9000», хост: «example.com»

Мне не удалось понять, почему не отправляется код 50x. Я не настроил какие-либо параметры страницы ошибок и я прочитал документацию страницы ошибок . Я также попытался установить код состояния (с error_page 500 = 500 /50x.html и т. Д.). Но всегда возвращается статус 200.

Я могу отправлять заголовки статуса из PHP (header('HTTP/1.1 404 Not Found')), это работает. Тем не менее, для ошибок, выданных интерпретатором PHP (также неперехваченные исключения), ответ сервера не учитывает возникшую ошибку.

1 Ответ

2 голосов
/ 28 июля 2011

К вашему сведению, теперь это исправлено в Xdebug (2.2) для PHP 5.4 и выше.К сожалению, для его работы нужно было изменить PHP, который нельзя перенести обратно на 5.3.

...