- ベストアンサー
file_get_contents()の挙動につい
今、PHPを使用したHTTP通信につきまして困っております。 何でも結構ですのでアドバイスいただけましたら助かります。。 file_get_contents()を利用して、REST通信をしています。 200応答時は問題無いのですが、404や400応答時に file_get_contents()はfalseしか返さず、 本来受信しているはずのコンテンツを取得することができません。 色々試していたのですが、解決策が見つかりませんでした。 よろしくお願いしますm(_ _)m
- みんなの回答 (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 );
その他の回答 (1)
- superside0
- ベストアンサー率64% (461/711)
・400 Bad Request リクエストに何らかの誤りがある ・404 Not Found 要求されたファイルなどが見つからない なので、コンテンツ取得できなくて 当たり前なのではないでしょうか? (httpレスポンスとして400や404が返るなら、 そうならないように、file_get_contents()に指定しているURLを修正するしかないのでは?)
お礼
早々にアドバイスいただきありがとうございます!
お礼
お礼遅くなってすいません。ようやく確認ができました。ばっちりでした!!!ありがとうございます!