Ich sende einen Artikelcode mit cUrl (php) an einen Webdienst im XML-Format. Ich bekomme die richtige Antwort in localhost, aber wenn es Server ist, wird es angezeigt
cURL-Fehler (7): Es konnte keine Verbindung zum Host 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 Liste und hole die Details daraus. Ich habe versucht, beide Versionen PHP 4+ und PHP5 + zu verwenden, nichts funktioniert. Jede Lösung.
--verbose
2. Wenn Sie mit Little Snitch (oder ähnlichem) unter OSX arbeiten, sehen Sie sich das an.Antworten:
ist sehr explizit ... es bedeutet
Failed to connect() to host or proxy.
Der folgende Code würde auf jedem System funktionieren:
$ch = curl_init("http://google.com"); // initialize curl handle curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $data = curl_exec($ch); print($data);
Wenn Sie Google-Seite nicht sehen können, dann ..
your URL is wrong
oder Sie haben einigefirewall
oderrestriction
Probleme.quelle
If you can not see google page then .. your URL is wrong or you have some firewall or restriction issue.
Welche Einschränkungen können bestehen?Der Fehler "CURL ERROR 7 Fehler beim Herstellen einer Verbindung zu" Berechtigung verweigert "wird verursacht, wenn aus irgendeinem Grund die Curl-Anforderung durch eine Firewall oder ähnliches blockiert wird.
Sie werden mit diesem Problem konfrontiert sein, wenn die Curl-Anforderung nicht mit Standardports ausgeführt wird.
Wenn Sie sich beispielsweise zu einer URL auf Port 1234 locken, tritt dieses Problem auf, bei dem Sie als URL mit Port 80 problemlos Ergebnisse erzielen.
Am häufigsten wurde dieser Fehler unter CentOS und jedem anderen Betriebssystem mit 'SElinux' beobachtet.
Sie müssen 'SElinux' entweder deaktivieren oder in "Zulässig" ändern
Schau dir das an
http://www.akashif.co.uk/php/curl-error-7-failed-to-connect-to-permission-denied
Hoffe das hilft
quelle
setsebool -P httpd_can_network_connect on
hat bei mir nicht funktioniert (auf Centos 8 wurde versucht, fail2ban-Curling auf einen Webhook zu bringen, wenn Ban / Unbans ausgelöst werden). Müssen Sie dies in einem bestimmten aktuellen Verzeichnis aufrufen, oder wird dadurch der Selinux-Bool aus einem beliebigen Verzeichnis angewendet?Wenn Sie alle Möglichkeiten ausprobiert haben und fehlgeschlagen sind, versuchen Sie diesen einen Befehl:
setsebool -P httpd_can_network_connect on
quelle
In meinem Fall hatte ich so etwas
cURL Error (7): ... Operation Timed Out
. Ich verwende die Netzwerkverbindung des Unternehmens, für das ich arbeite. Ich musste einige Umgebungsvariablen erstellen. Der nächste hat bei mir funktioniert:Im Linux-Terminal:
$ export https_proxy=yourProxy:80 $ export http_proxy=yourProxy:80
In Windows habe ich (die gleichen) Umgebungsvariablen auf Windows-Weise erstellt.
Ich hoffe, es hilft!
Grüße!
quelle
In PHP, wenn Ihr Netzwerk unter Proxy. 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
quelle
Können Sie diese URL per Browser oder PHP-Skript aufrufen? Der angezeigte Fehler ist, dass Sie keine Verbindung herstellen konnten. Stellen Sie also zunächst sicher, dass auf die URL zugegriffen werden kann.
quelle
Überprüfen Sie, ob die Ports 80 und 443 blockiert sind. oder geben Sie - IP graph.facebook.com ein und geben Sie es in die Datei etc / hosts ein
quelle
Sie können dies auch erhalten, wenn Sie versuchen, dieselbe URL mit mehreren HTTP-Anforderungen gleichzeitig zu treffen. Viele Curl-Anforderungen können keine Verbindung herstellen und kehren daher mit einem Fehler zurück
quelle
Dieses Problem kann auch durch Curl-Aufrufe von https verursacht werden, wenn es nicht auf dem Remote-Gerät konfiguriert ist. Ein Aufruf über http kann dieses Problem in diesen Situationen beheben, zumindest bis Sie ssl auf der Fernbedienung konfigurieren.
quelle
In meinem Fall wurde das Problem durch den Hosting-Anbieter verursacht, den ich verwendet habe, um http-Pakete zu blockieren, die an ihren IP-Block adressiert sind und aus ihrem IP-Block stammen. Unglaublich glaubwürdig !!!
quelle