从vhost配置中获取PHP响应头

4
我有一个虚拟主机配置,其中包含一个指令在每个请求中添加响应头,如下所示: Header append X-MyHeader "Info Stuff in here" 如果我在这个服务器上运行 phpinfo(),我会看到此标题包含在 apache2handler 部分下的 HTTP Headers Information 标题下的 HTTP Response Headers 中。PHP 似乎可以以某种方式访问此信息。
我尝试使用 headers_list()apache_response_headers() 获取此脚本的信息,但是它丢失了。
谷歌搜索没有找到解决方案,看起来这是一个罕见的情况。这里的另一个问题得到的答案是真的再次查询服务器并查看标头,但我不会这样做,因为我需要提供每个请求中的信息,子请求似乎会导致太多的性能损失。 phpinfo() 如何知道这些值?
更新1:PHP 在任何超全局变量(例如 $_SERVER$_ENV 等)中都不显示值。我在 phpinfo 页面上看到它的唯一位置是在上述部分中。否则这将是易如反掌。
1个回答

0
你可以这样做,但要确保它在文件中的任何其他打印内容之上,否则会出现错误。
<?php
foreach($_SERVER as $h=>$v)
 if(preg_match('/HTTP_(.+)/',$h,$hp))
   echo "<li>$h = $v</li>\n";
?>

编辑:

您是否启用了FastCGI?

请尝试此链接:{{link1:$_SERVER头在PHP中丢失但在Python中存在}}


1
感谢您的帮助尝试,但这似乎完全错误。信息不包含在 $_SERVER 中(请参阅我的更新)。我不明白为什么您的代码首先 echo,然后尝试设置标题 - 这肯定会失败。 - Sven
1
是的,那是个打字错误。很抱歉我不能提供更多帮助。 - Eric Leroy
1
好的,这样就清楚了。你说的是浏览器发送的REQUEST头部信息。我正在寻找服务器即将发送的RESPONSE头部信息,但这些信息不是由PHP设置的,而是由Apache配置设置的。我的PHP作为Apache模块运行。 - Sven
1
哈哈,好的。我刚才有点犯难。你是否使用诸如Firebug / Google开发人员工具之类的东西来分析你的代码呢?这可能有助于你找到问题所在。 - Eric Leroy
1
我清楚地知道我的问题出在哪里:我要如何让PHP给我显示在phpinfo()页面上的信息。我想要了解的是其中包含的机器配置信息,它还作为一个头部信息发送出去,以帮助定位负载均衡器的问题。我试图避免重新配置Apache虚拟主机,因为那将是另一种解决方案,但会花费时间。 - Sven
我谷歌搜索尝试找到phpinfo()源代码。最接近的是下载该语言的二进制文件。也许这篇文章有帮助?https://dev59.com/NFHTa4cB1Zd3GeqPWPYw - Eric Leroy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接