2013-03-13 42 views
4

可用我有一些自定义标题,它不可见在$_SERVER,但它可以帮助apache_request_headers()可见。

而这样的问题只存在于一个基于Windows的Apache版本(OpenServer)中。在Mac和Linux上Apache将所有头文件传递给php,我可以在$_SERVER变量中看到它...也许对Windows有一些限制?或者有没有在apache.conf中的任何设置可以激活通过所有头到mod_php?

+0

php是以cgi或apache模块运行吗? – Ghigo 2013-03-13 12:35:26

+0

@Ghigo作为模块 – user1016265 2013-03-13 12:55:46

回答

0

从PHP文件:http://php.net/manual/en/reserved.variables.server.php

上的评论,请注意:

在Windows IIS 7,您必须使用$ _ SERVER [ 'LOCAL_ADDR']而不是$ _ SERVER [ 'SERVER_ADDR']来获得服务器的IP地址。

看来,一些变量名称在Windows中是不同的,所以你必须找出它们。如果您仔细阅读文档注释,其中一些解决方法有几个解决方法

+0

虽然这并没有帮助,如果标题根本没有,也可能是这样的 – eis 2013-03-13 13:13:03

4

当PHP在Windows上作为Apache模块运行时,您将看不到$ _SERVER autoglobal阵列上的所有标头。

您必须使用apache_request_headers()检索它们。你可以使用一些代码来获得跨平台部署:

function GetHeader($myheader) { 
    if (isset($_SERVER[$myheader])) { 
    return $_SERVER[$myheader]; 
    } else { 
    $headers = apache_request_headers(); 
    if (isset($headers[$myheader])) { 
     return $headers[$myheader]; 
    } 
    } 
    return ''; 
} 

如果PHP是新的不够,你也可以尝试getallheaders()可以。

http://php.net/manual/en/function.getallheaders.php

+0

实际上我重新安装openserver和问题已经结束:) – user1016265 2013-03-14 15:25:53