Basic認証を設定したページでfile_get_contents( )のエラーが出た時の解決策

Basic認証を設定したページでfile_get_contents()を実行した際に、HTTP request failed! エラーが表示された時の解決策です。

file_get_contents()は、設定したファイルの中身をや文字列を取得するPHP関数です。URLを設定すると、Webページを構成するHTMLソースを読み込むことができます。

$html = file_get_contents('http://sample.jp/page.html');

上記のコードでは、file_get_contents()に設定したURLのページのHTMLが$htmlに文字列で取得されます。

Basic認証を設定したページでは、上記のコードを実行すると下記のようなエラーが表示されます。

failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized in ...

WebサイトのBasic認証に失敗したため、「401 Unauthorized」エラーが表示されています。

Basic認証のかかったURLにアクセスするために、Authorizationヘッダーにユーザ名、パスワードをセットしてリクエストするコードを追記します。

$opts = array(
  'http' => array(
    'method' => 'GET',
    'header' => 'Authorization: Basic '. base64_encode('user-id:password'),
  ),
);

$html = file_get_contents('https://sample.jp/page.html', false, stream_context_create($opts));

$opts配列の中でbase64_encode('ユーザ名:パスワード')を設定することで、Basic認証のかかったページにアクセスできるようになります。

$htmlstream_context_create($opts)を設定してHTMLを取得できました。

Share on Twitter
関連記事
PHPで「in_array() expects parameter 2 to be array…」エラーが表示された時の対処法
PHPで「in_array() expects parameter 2 to be array…」エラーが表示された時の対処法
phpで指定した値が配列に存在するか調べる方法
phpで指定した値が配列に存在するか調べる方法
slickのドット(dots)をスライドの画像にする方法
slickのドット(dots)をスライドの画像にする方法