サーバー以降後に、あるプログラムで不具合が発生したのですが、
不具合の原因が、file_get_content関数で指定URLの接続に失敗した場合でも、
falseを返さずにレスポンスボディを返していました。
このため、下記のようにfile_get_contentの合否判定を
戻り値で判定していると、接続失敗時の判定を誤っておりました。
----------------------------------------------------
$content = file_get_content('http://xxxxx.xxxxx');
if ($content !== false) {
echo '接続成功';
} else {
echo '接続失敗';
}
----------------------------------------------------
対応策として、$http_response_headerを参照して
ステータスコードで判別することでプログラムの不具合は回避できましたが、
プログラムの改修をせずに、
サーバーの設定で接続失敗時はレスポンスボディを取得しないようにできないでしょうか。
また、移行後のサーバーはPHP 5.2のため、
HTTPコンテキストオプションのignore_errorsは設定できません。
http://www.php.net/manual/ja/context.http.php
以上、よろしくお願いいたします。
「レスポンスボディを返していました」というのは
404 Not Found Errorではなく
何かのコンテンツを返してくるということですか?
それではアプリにエラー処理を書くしかありません
>※ブラウザ閲覧時に表示される404 Not FoundのエラーページのHTML
>ただし、旧サーバーで404 Not Found Errorページに接続するとfalseが返ってきます。
Webサーバは何でしょう?
サーバの設定を見直した方が良いと思います
404エラーだけを返すようにした方が良いと思います
ご回答ありがとうございます。
>何かのコンテンツを返してくるということですか?
左様です。file_get_contentsは404 Not Found Errorのエラー画面のHTMLコード※を返してきます。
※ブラウザ閲覧時に表示される404 Not FoundのエラーページのHTML
ただし、旧サーバーで404 Not Found Errorページに接続するとfalseが返ってきます。