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 — Tüm HTTP yanıt başlıklarını alır
Tüm HTTP yanıt başlıklarını alır. Apache, FastCGI, CLI ve FPM http sunucularında çalışır.
Bu işlevin bağımsız değişkeni yoktur.
Başarı halinde Apache yanıt başlıklarını içeren bir dizi;
aksi halde false
döndürür.
Örnek 1 - apache_response_headers() örneği
<?php
print_r(apache_response_headers());
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
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:
<?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;
}
}
?>
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.