• ベストアンサー

file_get_contents()の挙動につい

今、PHPを使用したHTTP通信につきまして困っております。 何でも結構ですのでアドバイスいただけましたら助かります。。 file_get_contents()を利用して、REST通信をしています。 200応答時は問題無いのですが、404や400応答時に file_get_contents()はfalseしか返さず、 本来受信しているはずのコンテンツを取得することができません。 色々試していたのですが、解決策が見つかりませんでした。 よろしくお願いしますm(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • ky072
  • ベストアンサー率60% (85/140)
回答No.2

PHP 5.2.10 以上であれば、 HTTP context options の ignore_errors が利用できます。 http://www.php.net/manual/en/context.http.php なお、HTTP レスポンスコードを確認したい場合、 $http_response_header でチェックする必要があります。 http://www.php.net/manual/en/reserved.variables.httpresponseheader.php $url = 'http://example.com/path/to/resource'; $opts = array( 'http' => array( 'ignore_errors' => true ) ); $context = stream_context_create( $opts ); $data = file_get_contents( $url, false, $context ); var_dump( $http_response_header[0] ); var_dump( $data );

参考URL:
http://www.php.net/manual/en/context.http.php
gogoyamada
質問者

お礼

お礼遅くなってすいません。ようやく確認ができました。ばっちりでした!!!ありがとうございます!

その他の回答 (1)

回答No.1

・400 Bad Request リクエストに何らかの誤りがある ・404 Not Found 要求されたファイルなどが見つからない なので、コンテンツ取得できなくて 当たり前なのではないでしょうか? (httpレスポンスとして400や404が返るなら、  そうならないように、file_get_contents()に指定しているURLを修正するしかないのでは?)

gogoyamada
質問者

お礼

早々にアドバイスいただきありがとうございます!

関連するQ&A