仍然需要为FCGI使用“状态:404未找到”?

时间:2012-01-11 23:35:56

标签: php http-headers http-status-codes

通常,当从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)确认这个吗?

1 个答案:

答案 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

在我的开发环境中正常工作