【问题标题】:Get response headers in PHP from vhost configuration从 vhost 配置中获取 PHP 中的响应标头
【发布时间】:2012-10-12 19:46:51
【问题描述】:

我有一个虚拟主机配置,它有一个指令可以为每个请求添加一个响应头,如下所示:

Header append X-MyHeader "Info Stuff in here"

如果我在此服务器上运行phpinfo(),我会看到标题HTTP 标头信息 下的apache2handler 部分中包含的标头为HTTP 响应标头。 PHP 似乎能够以某种方式访问​​此信息。

我尝试headers_list()apache_response_headers() 为我的脚本获取此信息,但它丢失了。

Google 搜索没有找到解决方案,这似乎是一种罕见的情况。 SO 上的另一个问题得到了再次真正查询服务器并查看标头的答案,但我不会这样做,因为我需要有关我服务的每个请求的信息 - 子请求似乎对性能造成太大影响。

phpinfo() 是如何知道这些值的?

更新 1:PHP 不显示任何超全局变量内的值,如 $_SERVER$_ENV 等。我在 phpinfo 页面上看到的唯一位置是在上面提到的部分。否则,这将是一个明智的选择。

【问题讨论】:

    标签: php apache http


    【解决方案1】:

    您可以这样做,但请确保它在文件中高于打印的任何其他内容,否则您会收到错误。

    <?php
    foreach($_SERVER as $h=>$v)
     if(preg_match('/HTTP_(.+)/',$h,$hp))
       echo "<li>$h = $v</li>\n";
    ?>
    

    编辑: 您是否启用了 FastCGI?

    试试这个链接:$_SERVER headers are missing in PHP but present in Python

    【讨论】:

    • 感谢您的帮助尝试,但这似乎完全错误。该信息不包含在 $_SERVER 中(请参阅我的更新)。而且我不明白为什么你的代码首先echos,然后尝试设置标题 - 这肯定会失败。
    • 是的,这是一个错字。抱歉,我无法提供更多帮助。
    • 好的,这就解决了。您正在谈论来自浏览器的 REQUEST 标头。我正在搜索我的服务器即将发送的 RESPONSE 标头,但这些标头不是由 PHP 设置的,而是由 apache 配置设置的。我的 PHP 作为 apache 模块运行。
    • 大声笑。好的。我挠了挠头。您是否使用诸如萤火虫/谷歌开发者工具之类的工具分析了您的代码?它可能会帮助您找出问题所在。
    • 我确切地知道我的问题出在哪里:我怎样才能让 PHP 给我 PHP 在 phpinfo() 页面上显示的信息。我想知道的标头包含我想知道的机器配置信息,它另外作为标头发送,以帮助查明负载均衡器的问题。我尽量避免重新配置 apache vhost,因为那将是另一种解决方案,但需要时间。
    猜你喜欢
    • 1970-01-01
    • 2020-01-02
    • 2017-06-18
    • 1970-01-01
    • 2017-11-06
    • 2023-01-12
    • 2017-07-28
    • 2019-03-04
    • 1970-01-01
    相关资源
    最近更新 更多