3

PHPに奇妙な問題がありますfile_get_contents

以前はfile_get_contents、リモートファイルでは、返されたHTTPステータスコードに関係なく、そのファイルのテキストが返されていました。APIにアクセスし、ステータスが500のJSONエラー情報を返すと、そのJSONが返さfile_get_contentsれます(エラーコードが発生したことを示すものはありません)。

私はUbuntu10.04サーバーをセットアップしました。これは、PHP5.3を搭載した最初のUbuntuです。PHPは、JSONを提供する代わりに、500エラーが存在する場合に警告をスローします。その結果、JSONを解析できず、適切なエラーメッセージが表示されます。

PHPがリモートファイルにエラーがあることに気付いているのはいいことですが、500エラーがある場合でも(特に!)JSONが必要です。これをオフにする方法はないようです。誰かがこれに遭遇しましたか?任意のヒント?

4

1 に答える 1

8

オプションをに設定しfile_get_contentsて適切なストリームコンテキストを(を使用してstream_context_create)提供することにより、使用時にストリームエラーを無視するようにPHPに指示できます。ignore_errorstrue

$context = stream_context_create(array('http'=>array('ignore_errors'=>true)));
$contents = file_get_contents($url, FALSE, $context);

$http_response_headerステータスコードを含む応答ヘッダーを確認することもできます。

于 2010-05-05T16:02:57.530 に答える