Я настроил 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 (также неперехваченные исключения), ответ сервера не учитывает возникшую ошибку.