web-dev-qa-db-ja.com

cURLエラー(7)を解決する方法:ホストに接続できませんでしたか?

CUrl(php)を使用して、xml形式でWebサービスにアイテムコードを送信します。私はローカルホストで正しい応答を取得しますが、サーバーを実行すると表示されます

cURLエラー(7):ホストに接続できませんでした

そして、ここに私のコードがあります:

function xml_post($post_xml, $url)
{
    $user_agent = $_SERVER['HTTP_USER_AGENT'];

    $ch = curl_init();    // initialize curl handle
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);          
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);    
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 50); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_xml); 
    curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
//  curl_setopt($ch, CURLOPT_PORT, $port);          

    $data = curl_exec($ch);
    $curl_errno = curl_errno($ch);
    $curl_error = curl_error($ch);
    if ($curl_errno > 0) {
            echo "cURL Error ($curl_errno): $curl_error\n";
    } else {
            echo "Data received\n";
    }
    curl_close($ch);

    echo $data;
}

集計にアイテムコードを送信し、そこから詳細を取得します。 php 4+とphp5 +の両方のバージョンを使用してみましたが、解決策はありません。

55
Raj

CURLエラーコード7(CURLE_COULDNT_CONNECT)

非常に明示的です... Failed to connect() to Host or proxy.を意味します

次のコードはどのシステムでも動作します。

$ch = curl_init("http://google.com");    // initialize curl handle
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);
print($data);

Googleページが表示されない場合は、.. your URL is wrongまたはfirewallまたはrestrictionの問題があります。

44
Baba

「CURL ERROR 7 Failed to connect to Permission denied」エラーは、何らかの理由でcurl要求が何らかのファイアウォールまたは同様のものによってブロックされている場合に発生します。

curl要求が標準ポートを使用していない場合、この問題に直面します。

たとえば、ポート1234にあるURLにカールする場合、ポート80のURLを使用すると簡単に結果が得られるこの問題に直面します。

最も一般的なこのエラーは、CentOSおよび「SElinux」を使用する他のOSで発生しています。

「SElinux」を無効にするか、寛容に変更する必要があります

これを見てください

http://www.akashif.co.uk/php/curl-error-7-failed-to-connect-to-permission-denied

お役に立てれば

19
Ali

私の場合、cURL Error (7): ... Operation Timed Outのようなものがありました。私が働いている会社のネットワーク接続を使用しています。環境変数を作成する必要がありました。次は私のために働いた:

Linuxターミナルの場合:

$ export https_proxy=yourProxy:80
$ export http_proxy=yourProxy:80  

Windowsでは、Windowsの方法で(同じ)環境変数を作成しました。

私はそれが役立つことを願っています!

よろしく!

2
Idealdo Félix

ブラウザまたはPHPスクリプトでそのURLにアクセスできますか?表示されるエラーは、接続できなかったことです。そのため、最初にURLにアクセスできることを確認してください。

2
Mohan Shanmugam

PHPでは、ネットワークがプロキシ下にある場合。プロキシURLとポートを設定する必要があります

curl_setopt($ch, CURLOPT_PROXY, "http://url.com"); //your proxy url
curl_setopt($ch, CURLOPT_PROXYPORT, "80"); // your proxy port number

これは私の問題を解決します

2
prince jose

私の場合、問題は、IPブロック内から発信されたIPブロックにアドレス指定されたhttpパケットをブロックしているホスティングプロバイダーが原因でした。信じられないほどの!!!

1
Jeff

この問題は、リモートデバイスでhttpsが設定されていない場合にhttpsにcurl呼び出しを行うことによっても発生します。これらの状況では、少なくともリモートでsslを構成するまで、httpを介して呼び出すと、この問題を解決できます。

1
Scott T Rogers

ポート80と443がブロックされているかどうかを確認します。または入力-IP graph.facebook.comとetc/hostsファイルに入力します

1
WhiteHorse