通常,当从PHP发送http状态标头时,会发送HTTP标头,如下所示:
header("HTTP/1.0 404 Not Found");
但是,PHP manual表示对于FCGI主机,需要发送一个“Status”标头,然后由FCGI模块转换为HTTP标头:
header("Status: 404 Not Found");
我在Windows 7计算机上使用mod_fcgi运行apache 2.2,使用header("HTTP/1.0 404 Not Found");
发送标头似乎工作正常。
这最近发生了什么变化?我还需要为FCGI主机发送Status
标头吗?任何人都可以为其他平台(solaris,linux)和其他网络服务器(nginx,lighttp)确认这个吗?
答案 0 :(得分:3)
除非您启用了cgi.rfc2616_headers选项,否则我认为您不需要使用“状态”样式标题。
该选项的说明是http://php.net/manual/en/ini.core.php
“告诉PHP在发送HTTP响应时使用哪种类型的标头 码。如果它设置为0,PHP将发送一个受其支持的Status:标头 Apache和其他Web服务器。当此选项设置为1时,PHP将 发送»RFC 2616兼容标头。除非你知道,否则将其设置为0 你正在做什么。“
基本上,您正在向PHP发送HTTP样式标头,然后PHP会在必要时将这些标头转换为“状态”样式标头。多年来似乎存在各种错误,其中这些错误要么被错误地转换,要么立即发送多个“状态”标题 - 但是现在所有这些错误似乎都已修复。所以我认为只安装HTTP样式标题并让PHP转换它们是安全的。
我也测试并发送了标题(“HTTP / 1.0 404 Not Found”);使用FastCGI
在我的开发环境中正常工作