Php标头简写功能在生产服务器上失败

时间:2012-06-19 09:29:53

标签: php header cgi

我正在尝试基于this answer实现一个非常简单的简写函数来发送标题。

功能如下:

function hdr($code)
{
    if (!headers_sent())
    {
        header('x', TRUE, $code);
    }
}

现在,它在我的本地服务器上运行良好,但是一旦我投入生产,我得到500,并且以下形成错误日志:

  

[Tue Jun 19 11:01:59 2012] [错误] [客户端87.12.83.179]来自脚本的标题错误。坏标头= x:php54.cgi

如果我修改这个功能:

function hdr($code)
{
    if (!headers_sent())
    {
        header($_SERVER['SERVER_PROTOCOL'], TRUE, $code);
    }
}

它适用于制作,但不适用于本地。

我猜问题是生产php是一个cgi脚本?任何解决问题的方法(即,对所有人都有一个函数),而不使用'codes'的关联数组=> '消息'?

1 个答案:

答案 0 :(得分:0)

问题是,标题永远不会像X。标题块以类似

的方式开头
HTTP/1.1 200 OK

然后只有键值对跟随

A-Header: Some value

似乎网络服务器接受HTTP/1.1没有状态作为标题,但你不应该依赖它。此外,您的本地服务器接受X作为标题值并不意味着您应该使用它;)