Как решить cURL Ошибка (7): не удалось подключиться к хосту? - PullRequest
55 голосов
/ 29 марта 2012

Я отправляю код товара в веб-сервис в формате xml, используя cUrl (php).Я получаю правильный ответ в localhost, но когда это делает сервер, он показывает

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 +, ничего не получается. Любое решение.

Ответы [ 9 ]

44 голосов
/ 29 марта 2012

Код ошибки 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.

19 голосов
/ 07 августа 2013

Ошибка «CURL ERROR 7 Failed to connect to Permission denied» возникает, когда по какой-либо причине запрос curl блокируется каким-либо брандмауэром или чем-то подобным.

Вы столкнетесь с этой проблемой, когда запросне со стандартными портами.

например, если вы свернетесь с каким-то URL-адресом на порте 1234, вы столкнетесь с этой проблемой, так как URL с портом 80 легко даст вам результаты.

БольшинствоОбычно эта ошибка наблюдается в CentOS и любой другой ОС с SElinux.

Вам нужно либо отключить, либо изменить SElinux на разрешающий

. Взгляните на это

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

Надеюсь, это поможет

2 голосов
/ 21 июля 2016

В PHP, если ваша сеть под прокси.Вы должны установить прокси URL и порт

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

Это решает мою проблему

2 голосов
/ 29 февраля 2016

В моем случае у меня было что-то вроде cURL Error (7): ... Operation Timed Out. Я использую сетевое подключение компании, в которой я работаю. Мне нужно было создать некоторые переменные среды. У меня сработало следующее:

В терминале Linux:

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

В Windows я создал (те же) переменные окружения в Windows.

Надеюсь, это поможет!

Привет!

2 голосов
/ 29 марта 2012

Можете ли вы получить доступ к этому URL с помощью браузера или сценария PHP?Показанная ошибка в том, что вы не можете подключиться.Поэтому сначала убедитесь, что URL-адрес доступен.

1 голос
/ 13 сентября 2016

В моем случае проблема была вызвана тем, что хостинг-провайдер, которого я использовал, блокировал http-пакеты, адресованные их IP-блоку, которые исходили из их IP-блока. Un-frickin-правдоподобно !!!

1 голос
/ 12 февраля 2016

Эта проблема также может быть вызвана вызовами curl для https, если он не настроен на удаленном устройстве.Вызов через http может решить эту проблему в этих ситуациях, по крайней мере до тех пор, пока вы не настроите ssl на удаленном компьютере.

1 голос
/ 14 октября 2012

Проверьте, не заблокированы ли порт 80 и 443. или введите - IP graph.facebook.com и введите его в файл etc / hosts

0 голосов
/ 23 июня 2014

вы также можете получить это, если вы пытаетесь получить один и тот же URL-адрес несколькими HTTP-запросами в одно и то же время. Многие запросы curl не смогут подключиться и вернутся с ошибкой

...