If apache_response_headers() returns an empty array, try calling flush() before and it'll get filled.
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
apache_response_headers — Obtiene todas las cabeceras HTTP de respuesta
Obtiene todas las cabeceras HTTP de respuesta. Funciona con Apache, FastCGI, CLI, y servidores Web FPM.
Devuelve una matriz con todas las cabeceras de respuesta de Apache o false
en caso de error.
Ejemplo #1 Ejemplo de apache_response_headers()
<?php
print_r(apache_response_headers());
?>
El resultado del ejemplo sería algo similar a:
Array ( [Accept-Ranges] => bytes [X-Powered-By] => PHP/4.3.8 )
If apache_response_headers() returns an empty array, try calling flush() before and it'll get filled.
This function doesn't exist on lighttpd, so I wrote this little function to emulate it:<?phpif (!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; }}?>
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.
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 )
For apache_response_headers() working good, you need to set up output_buffering = Off in php.ini
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.