Échec temporaire de la résolution de noms: échec de la recherche de nom d'hôte

10

J'ai un script en PHP qui fonctionne bien depuis des mois. Il a récemment cessé de fonctionner.

Ce script se connecte à gmail pour envoyer un e-mail à mes clients.

Récemment, j'ai commencé à obtenir cette erreur lorsque j'exécute le script:

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'

Gardez à l'esprit que c'était avec zéro changement de code.

J'ai regardé mon resolv.conf et il semble être correct:

nameserver 208.67.222.222

Je peux envoyer une requête ping à gmail.com:

# 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  

Je peux me connecter via lynx à Google et à d'autres sites sans problème.

Je me suis connecté à mon compte gmail sans problème (pas de captcha là non plus).

Je suis à bout de souffle. Quelqu'un a des idées?

G-Man

GeoffreyF67
la source
Le script échoue-t-il tout le temps? Ou juste occasionnellement?
MikeyB
Échoue à chaque fois.
GeoffreyF67
J'ai rencontré un problème similaire avec mon démon écrit en C qui effectue des reconnexions TCP périodiques. À un moment donné, getaddrinfo () a soudainement commencé à renvoyer l'erreur. Quand j'ai regardé le serveur, aucune requête DNS n'était envoyée et l'ajout de l'entrée requise dans / etc / hosts n'a pas aidé. Bien sûr, le redémarrage aide mais comme Xerxes l'a noté à juste titre, ce n'est pas la vraie solution. Au début, je pensais que le problème était dû à un appel à freeaddrinfo () manquant, mais je n'ai pas réussi à le reproduire avec une application de test. Quoi qu'il en soit, j'ai ajouté des appels de nettoyage appropriés au démon et je vais le surveiller de près.
Linulin

Réponses:

13

PHP a du mal à accéder à / etc / hosts ou /etc/resolv.conf: il y a un problème de longue date en PHP lié à cette erreur spécifique. Le correctif consiste à essayer de redémarrer Apache ou tout ce qui appelle PHP, ou à s'assurer que / etc / hosts et /etc/resolv.conf sont lisibles par ce qui appelle PHP.


la source
Le redémarrage a fait l'affaire!
GeoffreyF67
4
Oui, mais combien de temps avant le prochain redémarrage? Je chercherais plus loin et trouverais la cause première du problème.
Xerxes
Wow, j'avais le même problème, mais apparemment, le redémarrage du service httpd est la solution ... mais je ne comprends toujours pas ce qui cause cela ...
J_Wesker
6

Je viens de vivre la même erreur et

service httpd restart

a fait l'affaire ...


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

Maintenant, essayez d'utiliser Xdebug pour voir où se situe exactement le problème ....

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

Quelque chose de bon dans les journaux?

Xerxès
la source
1

Ajoutez du code de débogage avant cette ligne pour vous assurer que le script peut le résoudre correctement.

Matt Simmons
la source
0

J'ai eu cette faute aujourd'hui, mais elle s'est produite après un événement spécifique qui me fait penser que j'ai peut-être trouvé la cause.

En raison de certains problèmes liés à l'équipement réseau, j'ai redémarré le serveur et lorsqu'il est revenu, il y avait une connexion réseau incorrecte dans le câblage, ce qui signifie qu'aucun serveur DNS n'était disponible.

en attendant, cette fonction php a été appelée et après cela, elle n'a plus fonctionné jusqu'à ce que je redémarre httpd.

Je pense que le bogue peut être lié à une défaillance du réseau (où le DNS n'est pas seulement non disponible, mais inaccessible, c'est-à-dire un sous-réseau incorrect) et lorsque le réseau récupère par la suite cette fonction ne recherche plus le DNS.

Cette thead était il y a quelques années, peut-être que ce bug est maintenant corrigé en PHP?

Charlie
la source
0

J'avais le problème suivant lors de la mise à niveau de magento 2 vers la dernière version, donc je soupçonne que c'est le problème avec la configuration php.

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

Résolu en redémarrant la commande xampp through.

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

Ensuite, j'ai essayé à composer updatenouveau la commande et cela a fonctionné comme un charme.

Umar Yousaf
la source