我有一些自定义标题,在$_SERVER
中无法显示,但在帮助apache_request_headers()
时可见。
此问题仅存在于一个基于Windows的Apache版本(OpenServer)中。在Mac和Linux上,Apache将所有标头传递给php,我可以在$_SERVER
变量中看到它...也许对Windows有一些限制?或者apache.conf中是否有任何设置可以激活将所有标题传递给mod_php?
答案 0 :(得分:4)
当PHP在Windows上作为Apache模块运行时,您将看不到$ _SERVER autoglobal array上的所有标头。
您必须使用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()。
答案 1 :(得分:0)
来自PHP文档:http://php.net/manual/en/reserved.variables.server.php
在评论中,请注意:
在Windows IIS 7上,您必须使用$ _SERVER ['LOCAL_ADDR']而不是$ _SERVER ['SERVER_ADDR']来获取服务器的IP地址。
似乎某些变量名在Windows中是不同的,因此您必须找到它们。如果您仔细查看文档注释,可以使用其中一些解决方法