2017-04-06 11 views
0

ので、2日前、私はこのメッセージが表示されました:PHPの警告:のfile_get_contents

PHPの警告:のfile_get_contents(http://example.com):ストリームをオープンに失敗しました:接続が上/home/server/map/index.phpでタイムアウトライン30

これは私がライン29と30の上にきたものである:

$url = 'http://www.angelaget.se/till-salu/'; 

$string = file_get_contents($url); 

楽しい部分は、私は私のローカルホスト上の外部コンテンツを見ることができるということです。しかし、私はそれをサーバーにアップロードしません。それから私は、index.phpファイルに含まれているhtml + cssしか見ることができません。

私がしようとしているのは、利用可能なすべてのオブジェクトを外部のWebサイト(http://angelaget.se/till-salu/)から取得し、それらを私のウェブサイトに投稿することです。

私は他のいくつかのページでこれを行っています。しかし、今ではいくつかの問題が発生しました。

ここで私はどのように私はそれを解決することができますどのようなexemeplを持って誰もがPHPで。 おそらく全く異なる解決策ですか?私はアイデアを使い果たしましたCuzの

....

+0

は多分あなたのサーバがそのウェブにアクセスすることができないように聞こえますページ? – ADyson

+0

@ADyson どうすれば解決できるかご存知ですか?サーバーの設定またはそれに類するもの – Ekonomisten

+0

サーバが外部ネットワーク通話を許可されているかどうかを確認する必要があります。おそらくファイアウォールやルーティングの設定がそれを妨げることがあります。可能であればログオンし、コマンドラインからそのホストにpingを実行できるかどうか、または他の一般的なサイト(たとえばgoogleなど)にpingできるかどうかを確認します。しかし、実際には、それを解決するためには、ServerFaultサイトに適したsysadminの質問があります。 – ADyson

答えて

0

あなたがリモートでfile_get_contents機能を使用することができますが、多くのホストがこれを許可しません。あなたがfile_get_contentsメソッドを使用する必要がある場合は、ファイルphp.ini にしたり、コードの挿入前に、PHPの設定でdefault_socket_timeoutオプションを変更しよう:これは、接続に役立つはず

ini_set('default_socket_timeout', 900); // 900 Seconds = 15 Minutes

タイムアウトになりました。例えば Client URL Library

:しかし、私はいくつかのPHPフレームワークまたはちょうどCURLを使用することをお勧めします

function get_data($url) { 
    $ch = curl_init(); 
    $timeout = 900; // 900 Seconds = 15 Minutes 
    curl_setopt($ch, CURLOPT_URL, $url);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);  
    $data = curl_exec($ch);  
    curl_close($ch);  
    return $data; 
} 

使用法:

$returned_content = get_data('http://www.angelaget.se/till-salu/');

+0

私は何が起こるか試してみる:)私はabowをコメントしたので、これは私がhahaをやろうとしていることです...これは私のサイトfbapp.visionmedia.nuです。そして、私のPHPスクリプトで "住宅"を取得しようとする。 angelaget.se/till-saluから)これはlocalhostのようです:https://i.gyazo.com/ff9d9630063755a96201bc6d8cf07d7a.png – Ekonomisten

+0

@Jakobまず、すべてのサイトコンテンツ(angelaget.se/till-saluから)をstringに取得する必要があります。上記のコードを使用してこれを試してください。次に、[Dom Module](http://php.net/manual/en/book.dom.php)のようなツールを使用してhtmlコードを適切に切断し、 "Houses"だけを残す必要があります。 – rafalli