Все еще необходимо использовать «Статус: 404 не найден» для FCGI? - PullRequest
5 голосов
/ 12 января 2012

Обычно, при отправке заголовка статуса http из PHP, заголовок HTTP отправляется так:

header("HTTP/1.0 404 Not Found");

Однако в руководстве по PHP говорится, что для хостов FCGI необходимо отправить заголовок «Status», который затем преобразуется в заголовок 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)?

1 Ответ

3 голосов
/ 12 января 2012

Не думаю, что вам нужно использовать заголовок стиля 'Status', если у вас не включена опция 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 при необходимости преобразует их в заголовки в стиле «Статус». Кажется, что за эти годы были разные ошибки, либо они были либо неправильно сконвертированы, либо были отправлены сразу несколько заголовков «Status» - однако все эти ошибки, похоже, сейчас исправлены. Поэтому я думаю, что вы можете просто установить заголовки в стиле HTTP и позволить PHP преобразовать их.

Также я только что проверил и отправил заголовок («HTTP / 1.0 404 Not Found»); отлично работает в моей среде разработки с использованием FastCGI

...