Обычно, отправляя заголовок http из PHP, вы отправляете HTTP-заголовок следующим образом:
header("HTTP/1.0 404 Not Found");
Однако в руководстве по PHP говорится, что для хостов FCGI необходимо отправить заголовок «Статус», который затем преобразуется в HTTP-заголовок с помощью модуля FCGI:
header("Status: 404 Not Found");
Я запускаю apache 2.2 с PHP с помощью mod_fcgi на компьютере под управлением Windows 7 и отправляю заголовок, используя только header("HTTP/1.0 404 Not Found");
похоже, хорошо работает.
Это что-то, что изменилось недавно? Должен ли я по-прежнему отправлять заголовок Status
для хостов FCGI? Может ли кто-нибудь подтвердить это и для других платформ (solaris, linux) и других веб-серверов (nginx, lighttp)?
Я не думаю, что вам нужно использовать заголовок стиля «Статус», если у вас нет опции cgi.rfc2616_headers.
Описание этого параметра – http://php.net/manual/en/ini.core.php
«Рассказывает PHP о том, какие заголовки использовать при отправке кода ответа HTTP. Если он установлен 0, PHP отправляет заголовок Status:, поддерживаемый Apache и другими веб-серверами. Когда этот параметр установлен в 1, PHP отправит» RFC 2616 совместимые заголовки. Оставьте это значение равным 0, если вы не знаете, что делаете ».
В основном вы отправляете заголовки HTTP-заголовков на PHP, а затем PHP преобразует их в заголовки стиля «Статус», где это необходимо. Кажется, что были разные ошибки за годы, когда либо они либо были неправильно преобразованы, либо сразу отправлены заголовки «Статус», однако все эти ошибки теперь исправлены. Поэтому я думаю, что вы в безопасности, просто устанавливаете заголовки HTTP-заголовков и позволяете PHP их преобразовывать.
Также я просто протестировал и отправил заголовок («HTTP / 1.0 404 Not Found»); отлично работает в моей среде с помощью FastCGI