Beim Versuch, Informationen von einer externen Quelle abzurufen, erhalte ich die folgende Fehlermeldung:
Warnung : php_network_getaddresses: getaddrinfo fehlgeschlagen: Temporärer Fehler bei der Namensauflösung in Zeile # ...
Gestern war alles in Ordnung, also was ist mit diesem Skript passiert, das nicht funktioniert und mir den obigen Fehler gibt? Irgendwelche Lösungen oder Hinweise, um dieses Problem zu lösen?
$uri = "http://api.hostip.info/?ip=$ip&position=true";
$dom->load($uri);
Ich habe auch versucht, DNS in IP umzuwandeln, aber dann bekomme ich die Warnung: failed to open
$uri = "174.129.200.54/?ip=$ip&position=true";
Ich habe versucht, die http
zu entfernen, erhalte aber immer noch den obigen Fehler.
Dies ist darauf zurückzuführen, dass Sie den Hostnamen nicht auflösen können Möglicherweise DNS-Probleme. Host ist nicht erreichbar.
versuchen Sie, die IP-Adresse anstelle des Hostnamens zu verwenden ... Pingen Sie diesen Hostnamen an ... nslookup es ...
Konfigurieren Sie in der folgenden httpd.conf
-Datei die ServerName
ordnungsgemäß.
/etc/httpd/conf/httpd.conf
Wie unten:
ServerName 127.0.0.1:80
oder
ServerName sitename
Dies löste ein ähnliches Problem, vor dem ich stand.
In meinem Fall (mein Rechner ist ubuntu 16) füge ich die /etc/resolvconf/resolv.conf.d/base
-Datei hinzu, indem ich unter ns Zeilen hinzufüge.
nameserver 8.8.8.8
nameserver 4.2.2.1
nameserver 2001:4860:4860::8844
nameserver 2001:4860:4860::8888
führen Sie dann das Update-Skript aus.
resolvconf -u
Ich könnte mir vorstellen, dass sich die von Ihnen verwendeten DNS-Caching-Server nicht ordnungsgemäß verhalten (oder der DNS-Server für die Domäne, die Sie auflösen, nicht ordnungsgemäß funktioniert). Sie können versuchen, die frühere Möglichkeit zu beheben.
Haben Sie mindestens 2 Namenserver auf Ihrem Netzwerkadapter registriert? Sie können Ihren Computer jederzeit austauschen, um einen anderen Cache-DNS-Server zu verwenden, um dies auszuschließen. Versuchen Sie es mit Google:
8.8.8.8
8.8.4.4
Wenn Sie vorübergehende Ausfälle auf dem Remote-Server, mit dem Sie eine Verbindung herstellen möchten, einschränken können, bleibt nur die lokale Netzwerkkonfiguration als Problem bestehen.
Die Verwendung der IP-Adresse anstelle des Hostnamens funktioniert nur für die Standarddomäne auf dem Remote-Host.
Was passiert, wenn Sie versuchen, www.google.com (oder dessen IP-Adresse) zu verwenden? Wenn Sie keine Verbindung herstellen können, hat dies etwas mit dem Netzwerk zwischen Ihrem Server und der Außenwelt zu tun.
Obwohl dies ein alter Thread ist, bin ich kürzlich beim Ausführen von nslookup in CentOS 7 auf den gleichen Fehler gestoßen, und die Google-Suche hat mich zu einigen Diskussionen in SO geführt, die auch diese enthalten. Das Hinzufügen der Nameservereinträge zu /etc/resolv.conf allein war jedoch nicht hilfreich, da die Nameserver-Werte in resolv.conf vom NetworkManager mit den Standard-DNS-Nameservern überschrieben wurden, die sich im eth-Profil befinden, das der Ethernet-IP-Konfiguration zugeordnet ist.
Setzen Sie, wie von @ m-canvar erwähnt, die folgenden Einträge in /etc/resolv.conf
search yourdomain.com
nameserver 8.8.8.8
nameserver 4.2.2.1
nameserver 8.8.4.4
Um das Überschreiben dieser Einträge durch NetworkManager zu verhindern, gibt es zwei Möglichkeiten:
Option 1: Setzen Sie entweder NM_CONTROLLED = no in dem eth-Profil, das dem IPv4/IPv6-Profil zugeordnet ist.
Option 2: Deaktivieren Sie den NetworkManager-Dienst.
chkconfig NetworkManager off
service NetworkManager stop
Weitere Details können in meinem Post zu diesem Fehler und der Lösung gefunden werden.
Obwohl ich nicht genau diese Funktion verwendet habe, habe ich den gleichen Fehler erhalten.
In meinem Fall musste ich nur das Protokoll entfernen.
Anstatt $uri = "http://api.hostip.info/?ip=$ip&position=true";
Verwenden $uri = "api.hostip.info/?ip=$ip&position=true";
Und es hat danach gut funktioniert