PHPのお勉強!

PHP TOP

apache_response_headers

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

apache_response_headers HTTPレスポンスヘッダを全て取得する

説明

apache_response_headers(): array|false

全てのApacheレスポンスヘッダを配列として取得します。 Apache, FastCGI, CLI, FPM ウェブサーバーで動作します。

パラメータ

この関数にはパラメータはありません。

戻り値

全てのApacheレスポンスヘッダの配列、失敗した場合に false を返します。

例1 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() - ヘッダが既に送信されているかどうかを調べる
  • headers_list() - 送信した (もしくは送信される予定の) レスポンスヘッダの一覧を返す

add a note

User Contributed Notes 6 notes

up
3
Isaac Z dot Schlueter i at foohack dot com
15 years ago
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;
}
}

?>
up
2
php at mailplus dot pl
13 years ago
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.
up
1
orange
19 years ago
If apache_response_headers() returns an empty array, try calling flush() before and it'll get filled.
up
-1
athlet
18 years ago
For apache_response_headers() working good, you need to set up output_buffering = Off in php.ini
up
-2
Daniel Lorch
17 years ago
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
)
up
-2
Daniel Lorch
17 years ago
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.
To Top