Apache 函数
在线手册:中文 英文
PHP手册

apache_response_headers

(PHP 4 >= 4.3.0, PHP 5)

apache_response_headersFetch all HTTP response headers

说明

array apache_response_headers ( void )

Fetch all HTTP response headers.

返回值

An array of all Apache response headers on success 或者在失败时返回 FALSE.

更新日志

版本 说明
5.4.0 This function became available under FastCGI. Previously, it was supported only when PHP was installed as an Apache module.
4.3.3

Note:

从 PHP 4.3.3 起,也可在 Netscape/iPlanet/SunONE Web 服务器的 NSAPI 服务器模块 使用此函数。

范例

Example #1 apache_response_headers() example

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

以上例程的输出类似于:

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

参见


Apache 函数
在线手册:中文 英文
PHP手册
PHP手册 - N: Fetch all HTTP response headers

用户评论:

php at mailplus dot pl (18-Feb-2011 09: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.

Craig Harris (29-Jun-2010 06:04)

Be aware that apache_response_headers() does not include all headers, notably the content-type is missing as are any headers which apache will add after the php process completes.

This is a very misleading function, but it does at least have a better output structure than the more complete headers_list() function

Isaac Z dot Schlueter i at foohack dot com (28-May-2009 04: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 05: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 05: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 05:37)

For apache_response_headers() working good, you need to set  up output_buffering = Off in php.ini

orange (05-Sep-2005 04:17)

If apache_response_headers() returns an empty array, try calling flush() before and it'll get filled.