【问题标题】:Still necessary to use 'Status: 404 Not Found' for FCGI?仍然需要对 FCGI 使用“状态:404 Not Found”吗?
【发布时间】:2012-01-11 23:35:56
【问题描述】:

通常,当从 PHP 发送 HTTP 状态标头时,会像这样发送 HTTP 标头:

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

但是,PHP manual 表示对于 FCGI 主机,需要发送一个“状态”标头,然后由 FCGI 模块将其转换为 HTTP 标头:

header("Status: 404 Not Found");

我在 Windows 7 机器上使用 mod_fcgi 运行 apache 2.2 和 PHP,并且仅使用 header("HTTP/1.0 404 Not Found"); 发送标头似乎工作正常。

这是最近发生的变化吗?我还需要为 FCGI 主机发送 Status 标头吗?任何人都可以为其他平台(solaris、linux)和其他网络服务器(nginx、lighttp)确认这一点吗?

【问题讨论】:

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


    【解决方案1】:

    我认为您不需要使用“状态”样式的标题,除非您启用了选项 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 转换它们是安全的。

    我也刚刚测试并发送了 header("HTTP/1.0 404 Not Found");使用 FastCGI 在我的开发环境中运行良好

    【讨论】:

      猜你喜欢
      • 2016-07-01
      • 2016-11-07
      • 2012-04-15
      • 2014-04-22
      • 2015-01-09
      • 2020-05-28
      • 2015-09-06
      • 2020-03-26
      • 1970-01-01
      相关资源
      最近更新 更多