it-swarm.com.de

So lösen Sie cURL-Fehler (7): Es konnte keine Verbindung zum Host hergestellt werden.

Ich sende einen Artikelcode im XML-Format mit cUrl (php) an einen Webservice. Ich bekomme die korrekte Antwort in localhost, aber wenn es Server ist, zeigt es 

cURL-Fehler (7): Verbindung zum Host konnte nicht hergestellt werden

Und hier ist mein 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;
}

Ich sende den Artikelcode an die Abrechnung und hole die Details ab. Ich habe versucht, die Versionen php 4+ und php5 + zu verwenden.

53
Raj

CURL-Fehlercode 7 (CURLE_COULDNT_CONNECT)

ist sehr explizit ... es bedeutet Failed to connect() to Host or proxy. 

Der folgende Code funktioniert auf jedem System:

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

Wenn Sie keine Google-Seite sehen können, dann .. your URL is wrong oder Sie haben ein Problem mit firewall oder restriction.

44
Baba

“CURL ERROR 7 Fehler beim Herstellen der Verbindung zu Permission Denied” ist fehlgeschlagen, wenn die Curl-Anforderung aus irgendeinem Grund von einer Firewall oder Ähnlichem blockiert wird.

sie werden mit diesem Problem konfrontiert werden, wenn die Curl-Anfrage nicht mit Standardports ausgeführt wird.

wenn Sie sich beispielsweise zu einer URL auf Port 1234 bewegen, werden Sie mit diesem Problem konfrontiert, bei dem die URL mit Port 80 leicht zu Ergebnissen führt.

Am häufigsten wurde dieser Fehler bei CentOS und anderen Betriebssystemen mit "SElinux" festgestellt.

sie müssen "SElinux" entweder deaktivieren oder ändern, um die Berechtigung zu erhalten

schau dir das mal an

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

Hoffe das hilft

19
Ali

In meinem Fall hatte ich so etwas wie cURL Error (7): ... Operation Timed Out. Ich verwende die Netzwerkverbindung der Firma, für die ich arbeite. Ich musste einige Umgebungsvariablen erstellen. Der nächste arbeitete für mich:

Im Linux-Terminal:

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

In Windows habe ich (die gleichen) Umgebungsvariablen auf die Windows-Art erstellt.

Ich hoffe, es hilft!

Grüße!

2
Idealdo Félix

Können Sie diese URL über den Browser oder das Skript PHP aufrufen? Der angezeigte Fehler ist, dass Sie keine Verbindung herstellen konnten. Vergewissern Sie sich also zunächst, dass die URL erreichbar ist.

2
Mohan Shanmugam

In PHP, wenn Ihr Netzwerk unter Proxy steht. Sie sollten die Proxy-URL und den Port festlegen

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

Dies löst mein Problem

2
prince jose

In meinem Fall wurde das Problem dadurch verursacht, dass der Hosting-Provider, den ich blockierte, http-Pakete verwendete, die an ihren IP-Block gerichtet waren, der aus ihrem IP-Block stammte. Unfrickin glaubwürdig !!!

1
Jeff

Dieses Problem kann auch dadurch verursacht werden, dass Curl-Aufrufe an https erfolgen, wenn es nicht auf dem Remote-Gerät konfiguriert ist. Wenn Sie über http anrufen, kann dieses Problem in diesen Situationen behoben werden, zumindest bis Sie ssl auf der Fernbedienung konfigurieren.

1
Scott T Rogers

Prüfen Sie, ob die Ports 80 und 443 gesperrt sind. oder geben Sie - IP graph.facebook.com ein und geben Sie ihn in die Datei etc/hosts ein

1
WhiteHorse

sie können dies auch erhalten, wenn Sie versuchen, dieselbe URL mit mehreren HTTP-Anforderungen gleichzeitig zu erreichen. Viele Curl-Anforderungen können keine Verbindung herstellen und kehren daher mit Fehler zurück

0
dv3