PHP file_get_contents() and setting request headers


With PHP, is it possible to send HTTP headers with file_get_contents() ?

I know you can send the user agent from your php.ini file. However, can you also send other information such as HTTP_ACCEPT, HTTP_ACCEPT_LANGUAGE, and HTTP_CONNECTION with file_get_contents() ?

Or is there another function that will accomplish this?

6/22/2017 1:30:48 PM

Accepted Answer

Actually, upon further reading on the file_get_contents() function:

// Create a stream
$opts = [
    "http" => [
        "method" => "GET",
        "header" => "Accept-language: en\r\n" .
            "Cookie: foo=bar\r\n"

$context = stream_context_create($opts);

// Open the file using the HTTP headers set above
$file = file_get_contents('', false, $context);

You may be able to follow this pattern to achieve what you are seeking to, I haven't personally tested this though. (and if it doesn't work, feel free to check out my other answer)

5/11/2017 2:34:23 PM

Here is what worked for me (Dominic was just one line short).

$url = "";

$options = array(
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n" .  // check on
              "User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.102011-10-16 20:23:10\r\n" // i.e. An iPad 

$context = stream_context_create($options);
$file = file_get_contents($url, false, $context);

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow