通常,当从 PHP 发送 http 状态标头时,会发送如下 HTTP 标头:
header("HTTP/1.0 404 Not Found");
但是,那PHP手册表示对于 FCGI 主机,需要发送一个“状态”标头,然后由 FCGI 模块将其转换为 HTTP 标头:
header("Status: 404 Not Found");
我在 Windows 7 机器上使用 mod_fcgi 运行带有 PHP 的 apache 2.2,并仅使用发送标头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 和其他 Web 服务器。当该选项设置为 1 时,PHP 将
发送 » RFC 2616 兼容标头。将其设置为 0 除非您知道
你在做什么。”
基本上,您将 HTTP 样式标头发送到 PHP,然后 PHP 在必要时将它们转换为“状态”样式标头。多年来似乎存在各种错误,要么这些错误转换不正确,要么一次发送多个“状态”标头 - 然而所有这些错误现在似乎都已修复。所以我认为你只需要设置 HTTP 样式标头并让 PHP 转换它们就可以了。
另外,我刚刚测试并发送标头(“HTTP/1.0 404 Not Found”);使用 FastCGI 在我的开发环境中运行良好
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)