Vorübergehender Fehler bei der Namensauflösung: Fehler bei der Suche nach Hostnamen

10

Ich habe ein Skript in PHP, das seit Monaten einwandfrei läuft. Es hat vor kurzem aufgehört zu arbeiten.

Dieses Skript stellt eine Verbindung zu Google Mail her, um eine E-Mail an meine Kunden zu senden.

Vor kurzem wurde dieser Fehler angezeigt, als ich das Skript ausführte:

The SMTP connection failed to start [tls://smtp.gmail.com:465]: 
fsockopen returned Error Number 0 and Error String 'php_network_getaddresses: 
getaddrinfo failed: Temporary failure in name resolution'

Denken Sie daran, dies war ohne Codeänderungen.

Ich habe mir meine resolv.conf angesehen und es scheint in Ordnung zu sein:

nameserver 208.67.222.222

Ich kann gmail.com anpingen:

# ping smtp.gmail.com
PING gmail-smtp-msa.l.google.com (74.125.93.111) 56(84) bytes of data.
64 bytes from qw-in-f111.google.com (74.125.93.111): icmp_seq=1 ttl=247 time=26.7 ms  

Ich kann mich problemlos über Luchs mit Google und anderen Websites verbinden.

Ich habe mich ohne Probleme in meinem Google Mail-Konto angemeldet (auch dort kein Captcha).

Ich bin am Ende. Hat jemand irgendwelche Ideen?

G-Man

GeoffreyF67
quelle
Fällt das Skript ständig aus ? Oder nur gelegentlich?
MikeyB
Schlägt jedes Mal fehl.
GeoffreyF67
Ich habe ein ähnliches Problem mit meinem in C geschriebenen Daemon festgestellt, der regelmäßige TCP-Neuverbindungen ausführt. Irgendwann gab getaddrinfo () plötzlich den Fehler zurück. Als ich mir den Server ansah, wurden keine DNS-Anfragen gesendet, und das Hinzufügen des erforderlichen Eintrags in / etc / hosts half nicht. Sicher, ein Neustart hilft, aber wie Xerxes zu Recht bemerkt hat, ist dies nicht die richtige Lösung. Anfangs dachte ich, dass das Problem durch einen fehlenden freeaddrinfo () -Aufruf verursacht wurde, aber ich konnte es nicht mit einer Testanwendung reproduzieren. Wie auch immer, ich habe dem Daemon ordnungsgemäße Bereinigungsaufrufe hinzugefügt und werde ihn genau überwachen.
Linulin

Antworten:

13

PHP hat Probleme beim Zugriff auf / etc / hosts oder /etc/resolv.conf: Es gibt ein seit langem bestehendes Problem in PHP, das mit diesem speziellen Fehler zusammenhängt. Die Lösung besteht darin, zu versuchen, Apache oder was auch immer PHP aufruft, neu zu starten oder sicherzustellen, dass / etc / hosts und /etc/resolv.conf für das, was PHP aufruft, lesbar sind.


quelle
Neustart hat es geschafft!
GeoffreyF67
4
Ja, aber wie lange dauert der nächste Neustart? Ich würde weiter suchen und die Grundursache des Problems finden.
Xerxes
Wow, ich hatte das gleiche Problem, aber anscheinend ist der Neustart des Dienstes httpd die Lösung ... aber ich verstehe immer noch nicht, was dies verursacht ...
J_Wesker
6

Ich habe gerade den gleichen Fehler erlebt und

service httpd restart

hat den Trick gemacht ...


quelle
2
% dig @208.67.222.222 smtp.gmail.com +short
gmail-smtp-msa.l.google.com.
209.85.201.109
209.85.201.111
%

Versuchen Sie nun, Xdebug zu verwenden, um festzustellen, wo genau das Problem liegt.

<?php
xdebug_start_trace('/tmp/lookup-trace.log');
$ip = gethostbyname('smtp.gmail.com');
xdebug_stop_trace();
die($IP);
?>

Etwas Gutes in den Protokollen?

Xerxes
quelle
1

Fügen Sie vor dieser Zeile Debugging-Code hinzu, um sicherzustellen, dass das Skript ihn korrekt auflösen kann.

Matt Simmons
quelle
0

Ich hatte diesen Fehler heute, aber er trat nach einem bestimmten Ereignis auf, das mich glauben lässt, dass ich die Ursache gefunden habe.

Aufgrund einiger Probleme mit der Netzwerkausrüstung wurde ich tatsächlich vom Server neu gestartet, und als es wieder hochfuhr, gab es eine falsche Netzwerkverbindung in der Verkabelung, was effektiv bedeutete, dass kein DNS-Server verfügbar war.

In der Zwischenzeit wurde diese PHP-Funktion aufgerufen und danach funktionierte sie nie wieder, bis ich httpd neu startete.

Ich denke, der Fehler kann sich auf einen Netzwerkfehler beziehen (bei dem das DNS nicht nur nicht verfügbar, sondern auch nicht erreichbar ist, dh ein falsches Subnetz), und wenn das Netzwerk diese Funktion anschließend wiederherstellt, sucht es nicht erneut nach dem DNS.

Dieser Thead war vor ein paar Jahren, vielleicht ist dieser Fehler jetzt in PHP behoben?

Charlie
quelle
0

Ich hatte das folgende Problem beim Upgrade von Magento 2 auf die neueste Version, daher vermute ich, dass es das Problem mit der PHP-Konfiguration ist.

The "https://repo.magento.com/packages.json" file could not be downloaded: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution 
failed to open stream: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution

Es wurde behoben, indem der Befehl xampp through neu gestartet wurde.

sudo /opt/lampp/lampp/stop
sudo /opt/lampp/lampp/start

Dann versuchte composer updateich es erneut und es funktionierte wie ein Zauber.

Umar Yousaf
quelle