apache_response_headers()
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
获得全部 HTTP 响应头信息
说明
apache_response_headers(void): array
获得全部 HTTP 响应头信息。
返回值
成功时返回包含全部 Apache 响应头信息的数组,或者在失败时返回FALSE.
更新日志
| 版本 | 说明 |
|---|---|
| 5.5.7 | 此函数可用于 CLI server. |
| 5.4.0 | 此函数可用于 FastCGI。此前仅在PHP以 Apache 模块方式运行时支持。 |
| 4.3.3 | 从PHP 4.3.3 起,也可在 Netscape/iPlanet/SunONE Web 服务器的NSAPI 服务器模块使用此函数。 |
范例
apache_response_headers()示例
<?php print_r(apache_response_headers()); ?>
以上例程的输出类似于:
Array
(
[Accept-Ranges] => bytes
[X-Powered-By] => PHP/4.3.8
)
参见
apache_request_headers()获取全部 HTTP 请求头信息headers_sent()检测 HTTP 头是否已经发送headers_list()返回已发送的 HTTP 响应头(或准备发送的)
I get "Call to undefined function apache_response_headers()" when using php-cli so be aware of lack of this function CLI. In my case I was trying to test my app via phpunit (command line tool of course ;)) if it sends proper headers.
This function doesn't exist on lighttpd, so I wrote this little function to emulate it:
<?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;
}
}
?>
If apache_response_headers() returns an empty array, try calling flush() before and it'll get filled.
I can confirm athlet's experience with apache_response_headers() using PHP 5.1.6. When the resulting array is empty or only contains "X-Powered-By" instead of the full list of values, you'll need to switch off output_buffering _before_ the script has been executed, for example with the following directive in .htaccess:
php_value "output_buffering" "0"
it _doesn't_ work when you do a you ini_set('output_buffering', 0); in your script. Not sure why that is so - it is not a bug in PHP, but probably has to do with how Apache populates the request values.For apache_response_headers() working good, you need to set up output_buffering = Off in php.ini
Addendum: The code <pre> <?php print_r(apache_request_headers()); ?> </pre> gives me Array ( [X-Powered-By] => PHP/5.1.6 ) But the code <pre> <?php ob_end_flush(); print_r(apache_request_headers()); ?> </pre> Results in Array ( [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 )
call it after the you send the output to get all the headers
