2011-02-10 20 views
8
function get_data($url) { 
    $ch = curl_init(); 
    $timeout = 5; 
    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://google.com');を使用してPHPファイルでテストするが、それは働くことはできません。 "301 Moved Permanently"ドキュメントはここに移動しました。エラー。どうして?このphp cURL関数が機能しない理由

+4

起こるか起こらない何を? –

+1

302 Moved HTTPエラーが表示されますか?または同様のもの。精巧な男。 –

+0

yeap、私はコードを修正する302 Moved http error.howを取得します。ありがとうございました – runeveryday

答えて

29

あなたのコメントによれば、302ステータスコードが得られます。試しに30xリダイレクトを実行するには、

curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); 

を試してください。 curl_setopt()

+0

ありがとうございます。大丈夫です。私はなぜその行を追加する必要があるのか​​分からない。 – runeveryday

+2

@runeverydayリモートサーバがあなたに '302'ヘッダリダイレクトを渡し、本体に' location: '文字列を与えるためです。通常のブラウザが自動的に新しい場所に移動します(新しい要求がトリガーされます)。カールでは、それを明示的に伝える必要があります。ステータスコードとその意味については、このページをご覧ください。http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.htmlhttp://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html –

-1

は、次の行試し 「エコー」を追加することと同じくらい簡単されることがあります。また

echo get_data('http://google.com'); 

をcURLのモジュールだけで簡単に調べるにはphp.iniの

でアクティブであるかどうかを確認してください次の行をinfo.phpという新しいファイルに入れてください。

<?php 
phpinfo(); 

?> 

cUrlを検索してください。

あなたはそれがPHPのカールモジュールに

をインストールしたり、カールのオプションに以下を追加するために関与しているかを確認するにはhttp://php.net/manual/en/book.curl.phpを見ていてください見つけることができない場合:

ますcurl_setopt($ chを、CURLOPT_FOLLOWLOCATIONを、TRUE);

そして、二重の投稿を申し訳ありません。

+0

cURL拡張機能がアクティブ化されていない場合、最初に未定義の関数エラーが発生します... -_- – BoltClock

+0

curl_setopt($ ch、CURLOPT_FOLLOWLOCATION、TRUE); – bandam

+0

する必要がありますが、なぜこの行を追加する必要があるのか​​分かりません。 – runeveryday

3

マニュアルは、あなたのget_data関数に1つのより多くのオプションを追加します。

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

GoogleはローカルGoogleのサーバーにあなたをリダイレクトしているし、あなたのカールの呼び出しは、現在、リダイレクトを追いかけていません。

そうそう、
と結果を参照しvar_dump($returned_content);を行いますP

+0

ありがとうございます。それは私の人生を救った。 –

関連する問題