PHP 8.6.0 Beta 1 is available for testing

$http_response_header

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

$http_response_headerHTTP response headers

Warning

This feature has been DEPRECATED as of PHP 8.5.0. Relying on this feature is highly discouraged.

Use http_get_last_response_headers() instead.

Description

The $http_response_header array is similar to the get_headers() function. When using the HTTP wrapper, $http_response_header will be populated with the HTTP response headers. $http_response_header will be created in the local scope.

Examples

Example #1 $http_response_header example

<?php
function get_contents() {
 file_get_contents("http://example.com");
 var_dump($http_response_header); // variable is populated in the local scope
}
get_contents();
var_dump($http_response_header); // a call to get_contents() does not populate the variable outside the function scope
?>

The above example will output something similar to:

array(9) {
 [0]=>
 string(15) "HTTP/1.1 200 OK"
 [1]=>
 string(35) "Date: 2008年4月12日 17:30:38 GMT"
 [2]=>
 string(29) "Server: Apache/2.2.3 (CentOS)"
 [3]=>
 string(44) "Last-Modified: 2005年11月15日 13:24:10 GMT"
 [4]=>
 string(27) "ETag: "280100-1b6-80bfd280""
 [5]=>
 string(20) "Accept-Ranges: bytes"
 [6]=>
 string(19) "Content-Length: 438"
 [7]=>
 string(17) "Connection: close"
 [8]=>
 string(38) "Content-Type: text/html; charset=UTF-8"
}
Warning: Undefined variable $http_response_header
NULL

See Also

Found A Problem?

Learn How To Improve This PageSubmit a Pull RequestReport a Bug
+add a note

User Contributed Notes 3 notes

up
53
nicolas at toniazzi dot net
12 years ago
Note that the HTTP wrapper has a hard limit of 1024 characters for the header lines.
Any HTTP header received that is longer than this will be ignored and won't appear in $http_response_header.
The cURL extension doesn't have this limit.
http_fopen_wrapper.c: #define HTTP_HEADER_BLOCK_SIZE 1024
up
43
MangaII
11 years ago
parser function to get formatted headers (with response code)
<?php
function parseHeaders( $headers )
{
 $head = array();
 foreach( $headers as $k=>$v )
 {
 $t = explode( ':', $v, 2 );
 if( isset( $t[1] ) )
 $head[ trim($t[0]) ] = trim( $t[1] );
 else
 {
 $head[] = $v;
 if( preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) )
 $head['reponse_code'] = intval($out[1]);
 }
 }
 return $head;
}
print_r(parseHeaders($http_response_header));
/*
Array
(
 [0] => HTTP/1.1 200 OK
 [reponse_code] => 200
 [Date] => 2015年5月01日 12:56:09 GMT
 [Server] => Apache
 [X-Powered-By] => PHP/5.3.3-7+squeeze18
 [Set-Cookie] => PHPSESSID=ng25jekmlipl1smfscq7copdl3; path=/
 [Expires] => 1981年11月19日 08:52:00 GMT
 [Cache-Control] => no-store, no-cache, must-revalidate, post-check=0, pre-check=0
 [Pragma] => no-cache
 [Vary] => Accept-Encoding
 [Content-Length] => 872
 [Connection] => close
 [Content-Type] => text/html
)
*/
?>
up
1
hello at tzi dot fr
8 months ago
This feature has been deprecated as of PHP 8.5.0.
Here is a way to use it and be compatible with old and modern PHP version:
<?php
function get_contents() {
 file_get_contents("http://example.com");
 // For PHP >= 8.4.0
 if (function_exists('http_get_last_response_headers')) {
 $http_response_header = http_get_last_response_headers();
 }
 // No need for older PHP version
 var_dump($http_response_header);
}
?>
+add a note

AltStyle によって変換されたページ (->オリジナル) /