ConFoo 2025

apache_response_headers

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

apache_response_headersRécupère tous les en-têtes de réponse HTTP

Description

apache_response_headers(): array

Récupère tous les en-têtes de réponse HTTP. Fonctionne avec les serveurs web Apache, FastCGI, CLI, et FPM.

Liste de paramètres

Cette fonction ne contient aucun paramètre.

Valeurs de retour

Un tableau de tous les en-têtes de réponse d'Apache en cas de réussite.

Exemples

Exemple #1 Exemple avec apache_response_headers()

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

Résultat de l'exemple ci-dessus est similaire à :

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

Voir aussi

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