2016-08-29 5 views
2

ほとんどのサイトでは動作しますが、主なサイトでは動作しない非常に簡単なスクリプトがあります。以下のコードはサンプルサイトに完全にアクセスします。しかし、私がアクセスしたいサイトでそれを使用した場合、http://www.livescore.com私はエラーが発生しますウェブページの内容を読み込んで保存しないPHPスクリプト

これは動作します。

<?php 
$url = "http://www.cambodia.me.uk"; 
$page = file_get_contents($url); 
$outfile = "contents.html"; 
file_put_contents($outfile, $page); 
?> 

これは動作しません.....

<?php 
$url = "http://www.livescore.com"; 
$page = file_get_contents($url); 
$outfile = "contents.html"; 
file_put_contents($outfile, $page); 
?> 

と、次のエラーになります

警告:のfile_get_contents(http://www.livescore.com) [function.file-getを-内容] :ストリームを開くことに失敗しました:HTTP要求 が失敗しました! HTTP/1.0 404 Cにはない:\プログラムファイルを (x86の)\ EasyPHP-5.3.8.1 \ WWW \ Livescore \試行-1-読み-page.phpライン上の任意の援助

ための3

感謝

+0

てみ 'ます。http:// www.livescore.com /' –

+0

はい、私は試してみましたその - ノー良い:-) – kerry

+0

このことができますが、場合、私は知りませんOK I私はStackoverflowで見つけたこのコードを試して、それは動作しませんが、私は助けるかもしれない次のエラーを得ました - HTTP/1.1 301永久に移動されたサーバ:nginx日付:2020年8月29日08:58:20 GMTの場所:http://www.livescore.com/キャッシュコントロール:no-cache content-length:0接続:閉じる – kerry

答えて

0

。いくつかのuser-agentヘッダを追加しよう:

<?php 

$context = stream_context_create(
    array(
     'http' => array(
      'header' => "User-agent: chrome", 
      'ignore_errors' => true, 
      'follow_location' => true 
     ) 
    ) 
); 

$html = file_get_contents('http://www.livescore.com/', false, $context); 

echo substr($html, 0, 200)."\n"; 
+0

OKこの感謝をお祈りします – kerry

+0

livescore.com :-( – kerry

+0

、 'livescore'には' User-agent'が必要です。 –

0

ほとんどの場合、www.livescore.comは、file_get_contentsがキャッチするにはあまりにも基本的な隠れたリダイレクトを行っています。

lynxはあなたのサーバーにインストールされていますか?

$page= shell_exec("lynx -source 'http://www.livescore.com'"); 

lynxは完全なブラウザであり、特定のリダイレクトを 'バイパス'することができます。

$context = stream_context_create(
    array(
     'http' => array(
      'follow_location' => true 
     ) 
    ) 
); 

$html = file_get_contents('http://www.example.com/', false, $context); 

このサイトはUser-agent HTTPヘッダを解析しようとし、それが見つからない場合は失敗します。あなただけのリダイレクトに従うことをfile_get_contentsに言うことができる一般的なケースで

+0

これは共有ホスティングなので、試してみると良いですか? – kerry

+0

試してみましたが、私はドンしませんLynxがインストールされているとは思えません - 私はエラーは表示されませんが、リターン文字列はすべての座席に対して空ですesを試しました:-( – kerry

関連する問題