web-dev-qa-db-fra.com

Comment résoudre l'erreur cURL (7): impossible de se connecter à l'hôte?

J'envoie un code d'article à un service Web au format XML à l'aide de cUrl (php). Je reçois la réponse correcte dans localhost, mais quand le serveur le montre-t-il 

erreur cURL (7): impossible de se connecter à l'hôte

Et voici mon code:

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

J'envoie le code de l'article au décompte et récupère les détails. J'ai essayé d'utiliser les versions php 4+ et php5 +, rien ne fonctionne Toute solution.

53
Raj

Code d'erreur CURL 7 (CURLE_COULDNT_CONNECT)

est très explicite ... cela signifie Failed to connect() to Host or proxy. 

Le code suivant fonctionnerait sur n’importe quel système:

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

Si vous ne pouvez pas voir la page Google, alors ... your URL is wrong ou vous avez un problème firewall ou restriction.

44
Baba

Une erreur «CURL ERROR 7 n'a pas pu se connecter à l'autorisation refusée» est provoquée lorsque, pour une raison quelconque, la demande de verrouillage est bloquée par un pare-feu ou un dispositif similaire.

vous rencontrerez ce problème chaque fois que la demande curl ne concerne pas les ports standard.

par exemple, si vous utilisez une URL qui se trouve sur le port 1234, vous serez confronté à ce problème. En tant qu'URL avec le port 80, vous obtiendrez facilement des résultats.

Le plus souvent, cette erreur a été constatée sur CentOS et sur tout autre système d’exploitation utilisant ‘SElinux’.

vous devez soit désactiver, soit changer «SElinux» en permissif

jetez un coup d'oeil sur celui-ci

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

J'espère que cela t'aides

19
Ali

Dans mon cas, j'avais quelque chose comme cURL Error (7): ... Operation Timed Out. J'utilise la connexion réseau de l'entreprise pour laquelle je travaille. J'avais besoin de créer des variables d'environnement. La prochaine a travaillé pour moi:

En terminal Linux:

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

Dans Windows, j'ai créé (les mêmes) variables d'environnement dans le même sens que Windows.

J'espère que ça aide!

Cordialement!

2
Idealdo Félix

Pouvez-vous accéder à cette URL par navigateur ou par script PHP? L'erreur affichée est que vous ne pouvez pas vous connecter. Donc, vérifiez d'abord que l'URL est accessible.

2
Mohan Shanmugam

En PHP, si votre réseau sous proxy. Vous devez définir l'URL du proxy et le port

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

Ceci résout mon problème

2
prince jose

Dans mon cas, le problème était dû au fournisseur d’hébergement que j’utilisais pour bloquer les paquets http adressés à leur bloc IP et provenant de leur bloc IP. Un-frickin-crédible !!!

1
Jeff

Ce problème peut également être causé par des appels curl à https lorsqu'il n'est pas configuré sur le périphérique distant. Appeler via http peut résoudre ce problème dans ces situations, du moins jusqu'à ce que vous configuriez SSL sur la télécommande.

1
Scott T Rogers

Vérifiez si les ports 80 et 443 sont bloqués. ou entrez - IP graph.facebook.com et entrez-le dans le fichier etc/hosts

1
WhiteHorse