2012-03-29 40 views
47

私は、cUrl(php)を使用してxml形式でWebサービスにアイテムコードを送信します。私は、ローカルホストで正しい応答を得るが、それを行う際に、サーバーは、それは(7)cURLエラー(7)を解決する方法:ホストに接続できませんでしたか?

cURLのエラーを示しています

をホストに接続し、ここに私のコードがありますができませんでした:

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; 
} 

商品コードを集計に送信し、そこから詳細を取得します。私は両方のバージョンのphp4 +とphp5 +を使ってみましたが、何も解決しません。

+0

私は最終的に私の問題は解決してしまった、ここで二つのことを追加しますより多くの情報 –

+0

使用を使用してプロキシを選択します。 1. '--verboseを使用して、コマンドラインから実行カール' 2.リトル・スニッチ(またはこれに類似したOSX)を使用している場合は、それを見てください。 – Preexo

+0

を取得するための冗長オプションカールポート80 –

答えて

2

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

+3

うん。 localhostから私はそれにアクセスできます。私はブラウザでそれをpingし、それはpingします。 – Raj

41

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の問題があります。

+0

私はGoogleのページを見ることができます。しかし、私は同じURLを私はlocalhostでそれを使用し、そこでは正常に動作します。 – Raj

+0

あなたのURLは...サンプルURLをあなたに与えてもらえますか? – Baba

+0

私はあなたに何を求めているのですか? – Raj

1

ポート80と443がブロックされていないか確認してください。 - IP graph.facebook.comと入力してetc/hostsファイルに入力してください。

14

ファイアウォールなどでcurlリクエストがブロックされていると、「CURL ERROR 7 Permitted deniedへの接続に失敗しました」というエラーが発生します。 。

この問題は、カール要求が標準ポートで発生していない場合に発生します。

たとえば、ポート1234にあるURLにカールすると、ポート80のURLで結果が簡単に表示されるこの問題に直面します。

このエラーはCentOSと 'SElinux'を持つ他のOSでよく見られます。これは

+0

しかし、MACシステムについては – MeganZhou

+3

SELinuxを無効にすることは過度のものであり、他の領域のセキュリティに悪影響を及ぼします。 setsebool -P httpd_can_network_connect on –

+0

curlがこのエラーをスローしない標準ポートのリストはありますか? –

-1

に役立ちますあなたはどちらかに無効化または変更する「SElinuxが」

を許容する必要が

はこの1つ

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

の表情希望を持っているあなたがいる場合にも、これを取得することができます同じ時間に複数のHTTPリクエストで同じURLにヒットしようとしています。多くのカールリクエストは接続できないため、エラーが返ることはありません。

1

この問題は、リモートデバイスで設定されていないときに、curlをhttpsに呼び出すことによっても発生する可能性があります。 http経由でこれらの状況でこの問題を解決するには、少なくともリモートでsslを設定する必要があります。

1

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

Linuxターミナルで:Windowsで

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

を私が作成した(同じ)は、Windowsのように環境変数。

私はそれが助けてくれることを願っています!

よろしくお願いいたします。

+0

yourproxy - 127.0.0.1 –

2

PHPでは、ネットワークがプロキシの下にある場合。あなたはこれがある

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

プロキシURLとポートを設定する必要があります私の場合は私の問題

1

を解き、問題は私が由来自分のIPブロック宛のブロッキングHTTPパケットを使用していたホスティングプロバイダによって引き起こされましたそれらのIPブロック内にある。 Un-frickin-believable !!!

関連する問題