Using file_get_contents() to fetch the contents of a file is quite a common practice. This might be just to get the contents of a text file or to get the ImageCache module in Drupal to pre-cache images. The file_get_contents() function can get a local or remote file and is usually run like this.
$data = file_get_contents($url);
However, when trying to use this function to communicate with an authenticated server you will see the following error appearing.
- Warning: file_get_contents(http://www.example.com/test.php): failed to open stream: HTTP request failed!
- HTTP/1.1 401 Authorization Required in test.php on line 4
To get around this issue you will need to pass a third parameter to the file_get_contents() function that causes the function to use a context. This context will pass an additional Authorization header to the server and is created through a function called stream_context_create(). Here is all the code you need to use file_get_contents() in an authenticated manner.
The second parameter is for the addition of a flag and is skipped here by using a null value, but false is also applicable. For more information about what flags are available see the file_get_contents() page on the PHP manual.