PHPに関する質問です。

サーバー以降後に、あるプログラムで不具合が発生したのですが、
不具合の原因が、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

以上、よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/07/02 21:43:23
  • 終了:2011/07/09 21:45:02

回答(2件)

id:km1981 No.1

km1981回答回数429ベストアンサー獲得回数492011/07/09 12:04:38

ポイント50pt

「レスポンスボディを返していました」というのは

404 Not Found Errorではなく

何かのコンテンツを返してくるということですか?

それではアプリにエラー処理を書くしかありません

id:sasaki0822

ご回答ありがとうございます。

>何かのコンテンツを返してくるということですか?

左様です。file_get_contentsは404 Not Found Errorのエラー画面のHTMLコード※を返してきます。

※ブラウザ閲覧時に表示される404 Not FoundのエラーページのHTML


ただし、旧サーバーで404 Not Found Errorページに接続するとfalseが返ってきます。

2011/07/09 13:21:54
id:km1981 No.2

km1981回答回数429ベストアンサー獲得回数492011/07/09 20:34:39

ポイント50pt

>※ブラウザ閲覧時に表示される404 Not FoundのエラーページのHTML

>ただし、旧サーバーで404 Not Found Errorページに接続するとfalseが返ってきます。


Webサーバは何でしょう?

サーバの設定を見直した方が良いと思います

404エラーだけを返すようにした方が良いと思います

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません