apache_response_headers

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

apache_response_headers获得全部 HTTP 响应头信息

说明

array apache_response_headers ( void )

获得全部 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 服务器模块使用此函数。

范例

Example #1 apache_response_headers() 示例

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

以上例程的输出类似于:

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

参见

User Contributed Notes

Anonymous 12-Sep-2016 12:01
call it after the you send the output to get all the headers
php at mailplus dot pl 18-Feb-2011 10:11
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.
Isaac Z dot Schlueter i at foohack dot com 28-May-2009 05:57
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;
    }
}

?>
Daniel Lorch 24-May-2007 06:53
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
 )
Daniel Lorch 24-May-2007 06:46
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.
athlet 01-Feb-2006 06:37
For apache_response_headers() working good, you need to set  up output_buffering = Off in php.ini
orange 05-Sep-2005 05:17
If apache_response_headers() returns an empty array, try calling flush() before and it'll get filled.