プロが教えるわが家の防犯対策術!

PHPにて外部サイトの情報を取得しています。
数年前に作成し、問題なく取得できていたのですが
ここ数週間、タイムアウトとなってしまいます。

file($URL)で取得しているのですが、下記のエラーとなります。
<b>Warning</b>: file($URL): failed to open stream: Connection timed out in <b>XXX.php</b> on line <b>29</b><br />

色々なサイトで試したのですが、どれもエラーとなります。
※ブラウザで直接入力すればすぐにアクセスできます

レンタルサーバですがサーバサイドに確認したところ原因不明。
PHPのバージョンが [PHP 5.2.17]でした。
サーバサイドがバージョンアップ推奨とのアナウンスがでていたので
 [PHP 5.5.8]としましたが、一向にエラーのままです。

調査観点等、ございましたら教えて下さい。
宜しくお願い致します

A 回答 (3件)

エラーと直接関係ないですが、「file」じゃなくて「file_get_contents」の方が目的に合っていませんか…?



PHP Manual - file
http://www.php.net/manual/ja/function.file.php

PHP Manual - file_get_contents
http://www.php.net/manual/ja/function.file-get-c …

そして「file_get_contents」の代替として使えるcURL関数群を使えば、とりあえずエラーは回避出来る可能性があります。

ob_start();
curl_exec(curl_init($URL));
$data = ob_get_clean();

もしくは

$ch = curl_init($URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);

この回答への補足

ご回答有難うございました。

確かにアドバイスのコードの方が良さそうですね。

他の方の補足にも記載したのですが、
やっかいなのは、たまに何事もなく取得できていることです。
特定サイトのみ繋がらない状態であれば、そのサイトがメンテ中等あるかと
思うのですが、繋がらない時間はどんなサイトも取得できません。
googleやyahooも。

レンタルサーバなので、サーバサイドの設定を疑っているのですが
問い合わせても問題ないの回答です。。

現在、エラーとなる状態でして、アドバイス頂いたコードでも
Internal Server Error
となりました。

常時繋がる状態がベストなのですが、繋がる状態で試せたら再度試してみます。

他にも思い当たる点、ございましたらアドバイスお願い致します。

補足日時:2014/05/24 17:56
    • good
    • 0

$URLのサイトは今でも有効なのでしょうか?


そこはテストしてみたほうがいいかもですよね。
あと、別の、www.google.co.jpでもいいので、別アドならどうなるかとか。
その関数がなぜそのエラーを出したかを突き止めるのが、
先だとおもわれます。

この回答への補足

ご回答有難うございました。

質問にも記載してますが、
色々なサイトで試してますが、繋がらない状態の時は
すべてエラーとなってしまいます。

やっかいなのは、たまに何事もなく取得できていることです。
特定サイトのみ繋がらない状態であれば、そのサイトがメンテ中等あるかと
思うのですが、繋がらない時間はどんなサイトも取得できません。
googleやyahooも。

レンタルサーバなので、サーバサイドの設定を疑っているのですが
問い合わせても問題ないの回答です。。

他にも思い当たる点、ございましたらアドバイスお願い致します。

補足日時:2014/05/24 17:53
    • good
    • 0

この回答への補足

ご回答有難うございました。
参考URLは確認しておりまして

●原因1:ファイル名を間違えている
単純な原因です。
>あってます。

●原因2:ファイル名(パス)に「¥」が含まれる
ファイル名(パス)に「¥」が含まれると、そのファイルをうまく開くことができません。
>問題無いです。

●原因3:外部URLを開けない設定になっている
php.iniの設定が「allow_url_fopen = Off」
>ONになっています。

やっかいなのは、たまに何事もなく取得できていることです。
特定サイトのみ繋がらない状態であれば、そのサイトがメンテ中等あるかと
思うのですが、繋がらない時間はどんなサイトも取得できません。
googleやyahooも。

レンタルサーバなので、サーバサイドの設定を疑っているのですが
問い合わせても問題ないの回答です。。

他にも思い当たる点、ございましたらアドバイスお願い致します。

補足日時:2014/05/24 17:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!