apache_response_headers

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

apache_response_headers获取所有 HTTP 响应头

描述

apache_response_headers(): array|false

获取所有 HTTP 响应头。在 Apache、FastCGI、CLI 和 FPM Web 服务器中工作。

参数

此函数没有参数。

返回值

成功时返回所有 Apache 响应头的数组,失败时返回 false

示例

示例 #1 apache_response_headers() 示例

<?php
print_r
(apache_response_headers());
?>

以上示例将输出类似于以下内容

Array
(
    [Accept-Ranges] => bytes
    [X-Powered-By] => PHP/4.3.8
)

参见

添加备注

用户贡献的笔记 7 笔记

3
Isaac Z dot Schlueter i at foohack dot com
15 年前
此函数在 lighttpd 上不存在,所以我编写了这个小函数来模拟它

<?php

if (!function_exists('apache_response_headers')) {
function
apache_response_headers () {
$arh = array();
$headers = headers_list();
foreach (
$headers as $header) {
$header = explode(":", $header);
$arh[array_shift($header)] = trim(implode(":", $header));
}
return
$arh;
}
}

?>
2
php at mailplus dot pl
13 年前
当使用 php-cli 时,我收到“调用未定义函数 apache_response_headers()”错误,因此请注意 CLI 中缺少此函数。
在我的情况下,我试图通过 phpunit(当然是用命令行工具;))测试我的应用程序是否发送了正确的头。
1
orange
18 年前
如果 apache_response_headers() 返回空数组,请尝试在调用之前调用 flush(),它将被填充。
-1
athlet
18 年前
为了使 apache_response_headers() 正常工作,您需要在 php.ini 中设置 output_buffering = Off
-2
Daniel Lorch
17 年前
补充说明:代码

<pre>
<?php
print_r
(apache_request_headers());
?>
</pre>

给了我

数组
(
[X-Powered-By] => PHP/5.1.6
)

但是代码
<pre>
<?php
ob_end_flush
();
print_r(apache_request_headers());
?>
</pre>

结果是

数组
(
[Content-Location] => phpinfo.de.php
[Vary] => negotiate
[TCN] => choice
[X-Powered-By] => PHP/5.1.6
[Keep-Alive] => timeout=15, max=96
[Connection] => Keep-Alive
[Transfer-Encoding] => chunked
[Content-Type] => text/html
[Content-Language] => de
)
-2
Daniel Lorch
17 年前
我可以确认 athlet 使用 PHP 5.1.6 对 apache_response_headers() 的体验。当结果数组为空或仅包含“X-Powered-By”而不是完整的列表时,您需要在脚本执行之前关闭 output_buffering,例如在 .htaccess 中使用以下指令

php_value "output_buffering" "0"

它在您在脚本中进行 ini_set('output_buffering', 0); 时不起作用。不确定为什么是这样 - 这不是 PHP 中的错误,但可能与 Apache 如何填充请求值有关。
-19
匿名
7 年前
在您发送输出以获取所有头之后调用它
To Top