É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


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.


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 ...


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?


1

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


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?


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.