人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: sasaki0822
●カテゴリ:インターネット ウェブ制作
✍キーワード:echo HTTP PHP URL オプション
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● km1981
●50ポイント

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

404 Not Found Errorではなく

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

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

◎質問者からの返答

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

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

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

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


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


2 ● km1981
●50ポイント

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

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


Webサーバは何でしょう?

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ