79 votes

Comment résoudre l'erreur cURL (7) : couldn't connect to host ?

J'envoie un code d'article à un service web au format xml en utilisant cURL(php). J'obtiens la réponse correcte en localhost, mais quand je le fais sur le serveur il montre

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 Tally et je récupère les détails à partir de celui-ci. J'ai essayé d'utiliser les deux versions de php 4+ et php5+, mais rien ne fonctionne Aucune solution.

0 votes

Choisissez un proxy qui utilise un port 80

0 votes

Utiliser l'option curl verbose pour obtenir plus d'informations

0 votes

J'ajouterai deux choses ici qui ont finalement permis de résoudre mon problème : 1. exécuter cURL à partir de la ligne de commande avec --verbose 2. Si vous êtes sous OSX avec Little Snitch (ou similaire), regardez ça.

2voto

Mohan Shanmugam Points 123

Pouvez-vous accéder à cette URL par le navigateur ou par le script de PHP ? L'erreur affichée est que vous n'avez pas pu vous connecter. Donc, confirmez d'abord que l'URL est accessible.

1voto

WhiteHorse Points 63

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

1voto

user3615619 Points 21

Vous pouvez également obtenir ce problème si vous essayez de frapper la même URL avec plusieurs requêtes HTTP en même temps, de nombreuses requêtes curl ne seront pas en mesure de se connecter et retourneront donc avec l'erreur

1voto

Scott T Rogers Points 425

Ce problème peut également être causé par des appels curl vers https alors que celui-ci n'est pas configuré sur le périphérique distant. L'appel à http peut résoudre ce problème dans ces situations, au moins jusqu'à ce que vous configuriez ssl sur le périphérique distant.

1voto

Jeff Points 351

Dans mon cas, le problème était dû au fait que l'hébergeur que j'utilisais bloquait les paquets http adressés à son bloc IP et provenant de l'intérieur de ce bloc. Incroyable ! !!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X