2010-11-18 16 views
1

私はcURLについて質問があります。私はこの機能をcURLを使用しています:cURLが正しく機能していません!

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

のみこれがエラー原因た:「メッセージ:ますcurl_setopt()function.curl-SETOPT]:セーフモードまたはopen_basedirのが設定されている場合CURLOPT_FOLLOWLOCATIONが活性化することができない」

私はこれを解決するためにホスティングプロバイダに依頼しました。しかし、これは本当にばかげて、私のbinディレクトリに "カール"ファイルを置いています。私はPHPスクリプトにこれをどのように含めるべきかわかりません:S。

これまでに行ったことはありませんが、誰でも助けてくれます。私は本当に立ち往生している。私は十分な情報を投稿して願っています!

Tnx in advanced!


Tnxはすばらしい回答です。しかし、どのように私はこのコードで "exec()"に合うでしょうか?

// create a new cURL resource 
    $ch = curl_init(); 

    // set URL and other appropriate options 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    curl_setopt($ch, CURLOPT_TRANSFERTEXT, TRUE); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); 
    curl_setopt($ch, CURLOPT_URL, $articleUrl); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_MAXREDIRS, 5); 

    // grab URL and pass it to $grabArticle 
    $grabArticle = curl_exec($ch); 

編集2: おけば、私はほとんどそれが:)働いてしまいました。私はパテでそれを実行すると、それだけで正常に動作しているが、私のPHPスクリプトの何も起こらないで:(

私はこれを実行します?

$grabArticle = exec('/home/twittern/bin/curl -L -m 30 -w url_effective --max-redirs 5 http://fok.nl/415758'); 
echo $grabArticle; 

私が間違ってやっている任意のもの

+0

だから、彼らはあなたにカールの実行ファイルを与えただけですか?彼らはあなたが'exec'でそれを実行することを期待しているように聞こえます。 – JAL

+1

更新プログラムを再インストールするには、コマンドラインでこれらのオプションを再構築する必要があります.http://curl.haxx.se/docs/manpage.html –

+0

ああ、F * cked up:Sです。つまり、$ grabArticle = exec( '/ home/twittern/bin/curl'。$ articleUrl。 '-A のようになります。0(互換性; MSIE 5.01; Windows NT 5.0)> -L '); – iSenne

答えて

3

、彼らは外部のコマンドラインバージョンを使用するためにあなたを求めています。

PHP exec()関数を使用してプログラムを呼び出すと、コマンドラインオプションはcurl man pageにあります。

応答が完全に必要な場合は、出力バッファリングでpassthru()を使用するか、出力を(一時的な)ファイルに保存する必要があります。

1

PHPカールdoesnの「Tは、カールビンが利用可能であることに依存している。(PHPは4.0.2以降、デフォルトでカールをサポートしています)

ホスティングプロバイダは、念のあなたのPHPにする必要がありますINIはsafe_modeはオフにしている。

を210

しかし、これを処理する方法(カールバイナリを与える)は、exec()を使用して呼び出すように見えます。

個人的には、より良いホストを見つけることをお勧めします。

+0

同意します、しかし別のホストは本当にオプションではありません:)。 – iSenne

1

あなたのプロバイダは吸う。それらを呼び出して、カールサポートを含めるためにPHPを再コンパイルするようにしてください。

そうしないと、curlを直接呼び出すことになります。代わりに内蔵されたPHP内でのcURL関数を使用しての

$result = exec("/bin/curl http://www.foobar.com"); 
+0

彼はカールサポートをコンパイルしています。ちょうどsafe_modeまたはopen_basedirが有効です。共有ホスティングの場合、これらのセキュリティ対策をオンデマンドでオフにする可能性は低いです。 – Orbling

+0

私はByronに同意します。 – iSenne

+0

これについての面白いことは、セーフモードをオンにした場合、 'exec()'も動作しないことです。これは、それは? –

関連する問題