php - 并非所有 header 都在 $_SERVER [PHP] 中可用

标签 php apache

我有一些自定义 header ,它在 $_SERVER 中不可见,但在帮助 apache_request_headers() 中可见。

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

最佳答案

当 PHP 在 Windows 上作为 Apache 模块运行时,您不会在 $_SERVER 自动全局数组中看到所有 header 。

您必须使用 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

关于php - 并非所有 header 都在 $_SERVER [PHP] 中可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15382407/

相关文章:

PHP 将每个元素追加到数组中

php - 更新mysql中的表

html - 想要在客户端加载 GWT 应用程序的 .cache.html 文件

java - 如何在 JavaPNS 推送通知中向有效负载添加 JSON?

apache - htaccess 和 htpasswd 问题

java - 使用 Excel 表中的信息填充 Mysql 表,包括图像的相对路径

javascript - 加载页面时显示重新加载框的灯箱

php - 这是重建给定用户 session 的正确方法吗?

apache - .htaccess 重写/foo/bar/to/foo/bar.php

Apache 2.2 到 2.4 重定向太多