0

PHP で cURL を使用しようとすると、次のエラーが表示されます。

「208.77.188.166 への接続に失敗しました: 操作は許可されていません」

サーバーの問題だと確信していますが、念のため、私のコードは次のとおりです。

<?php

$ch = curl_init();
$url  ="http://www.example.com";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$output = curl_exec($ch) or die(curl_error($ch));
echo $output;

?>

cURL は Apache で有効になっています。ファイルのパーミッションを 777 に変更してみました。

何か案は?

4

6 に答える 6

1

多くの共有ホスティングプロバイダーは、アウトバウンド接続を禁止しています。 たとえば、Bluehostでは、アウトバウンド接続を許可する前に静的IPを購入する必要があります。次に、CURLが使用するアウトバウンドインターフェイスを認識していることを確認する必要があります。

于 2009-03-05T03:42:55.793 に答える
1

必要なすべてのCURLオプションを設定していることを確認してください。

  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HEADER         => false,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_ENCODING       => "",
  CURLOPT_USERAGENT      => "spider",
  CURLOPT_AUTOREFERER    => true, 
  CURLOPT_CONNECTTIMEOUT => 120,
  CURLOPT_TIMEOUT        => 120,
  CURLOPT_MAXREDIRS      => 10,

また、次のようなものを使用してエラーをエコーアウトすることもお勧めします。

$hostconnect = curl_init($url);
$errmsgcurl  = curl_error($hostconnect);
echo $errmsgcurl;

上記のコードはテストされておらず、単なる例です。

また、ローカルのApacheサーバーでコードを試して、問題がどこにあるかを簡単に判断できるようにすることをお勧めします。

于 2009-03-04T16:39:51.130 に答える
1

受信しているエラーは、ファイアウォールがすべての送信接続をブロックしている可能性が最も高いです。多くの共有ホスティング プロバイダーは、ポート 80 の発信接続をブロックして、リモート インクルードをサーバーに対する攻撃ベクトルとして使用できるようにする PHP スクリプトで横行するエラーを阻止しようとしています。

ホストに連絡してください。その場合は、リモート ホストに接続する別の方法を見つけるか、ホスティング会社を移動する必要があります。

于 2009-03-05T03:55:49.397 に答える
0

サーバー上のプロキシの問題またはある種の認証の問題である可能性があります-通常のWebブラウザを使用してこのURLにアクセスできますか?

于 2009-02-17T23:40:34.937 に答える
0

サーバーまたはワークステーション (コマンド ライン バージョン) にインストールされているバージョンの curl を使用してみて、エラーを再現してみてください。連絡しようとしています。

于 2009-02-17T23:01:55.763 に答える