Errore temporaneo nella risoluzione dei nomi: errore nella ricerca del nome host


10

Ho una sceneggiatura in PHP che funziona bene da mesi. Di recente ha smesso di funzionare.

Questo script si collega a Gmail per inviare un'e-mail ai miei clienti.

Di recente, ho iniziato a ricevere questo errore quando eseguo lo 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'

Tieni presente, questo è stato con zero modifiche al codice.

Ho visto il mio resolv.conf e sembra essere ok:

nameserver 208.67.222.222

Posso fare un 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  

Posso collegarmi via lince a google e altri siti senza problemi.

Ho effettuato l'accesso al mio account Gmail senza problemi (nessun captcha lì).

Sono alla fine. Qualcuno ha qualche idea?

G-Man


È lo script fallendo tutto il tempo? O solo occasionalmente?
MikeyB,

Fallisce ogni volta.
Geoffrey

Ho riscontrato un problema simile con il mio demone scritto in C che esegue periodiche riconnessioni TCP. Ad un certo punto getaddrinfo () ha iniziato improvvisamente a restituire l'errore. Quando ho guardato il server, non sono state inviate richieste DNS e l'aggiunta della voce richiesta in / etc / hosts non ha aiutato. Certo, il riavvio aiuta ma, come giustamente notato Serse, questa non è la vera soluzione. Inizialmente pensavo che il problema fosse causato dalla mancanza della chiamata freeaddrinfo () ma non sono riuscito a riprodurlo con un'applicazione di prova. Ad ogni modo, ho aggiunto le chiamate di cleanup adeguate al demone e ho intenzione di monitorarlo attentamente.
Linulin,

Risposte:


13

PHP ha difficoltà ad accedere a / etc / hosts o /etc/resolv.conf: esiste un problema di vecchia data in PHP relativo a questo errore specifico. La soluzione è provare a riavviare Apache o qualunque cosa stia invocando PHP, o assicurarsi che / etc / hosts e /etc/resolv.conf siano leggibili da ciò che sta invocando PHP.


Il riavvio ha fatto il trucco!
Geoffrey

4
Sì, ma quanto tempo è necessario prima del prossimo riavvio? Guarderei oltre e troverei la causa principale del problema.
Serse

Wow, stavo avendo lo stesso problema, ma a quanto pare il servizio di riavvio httpd è la soluzione ... ma ancora non capisco che cosa causa questo ...
J_Wesker

6

Ho appena riscontrato lo stesso errore e

service httpd restart

fatto il trucco ...


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

Ora prova a usare Xdebug per vedere esattamente dove si trova il problema ....

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

C'è qualcosa di buono nei registri?


1

Aggiungi il codice di debug prima di quella riga per assicurarti che lo script possa risolverlo correttamente.


0

Ho avuto questo difetto oggi, tuttavia si è verificato dopo un evento specifico che mi fa pensare che potrei aver trovato la causa.

A causa di alcuni problemi alle apparecchiature di rete, in realtà ho riavviato dal server e quando è tornato indietro, c'era una connessione di rete errata nel cablaggio, il che significa che in realtà nessun server DNS era disponibile.

nel frattempo questa funzione php è stata chiamata e dopo non ha più funzionato fino a quando non ho riavviato httpd.

Penso che il bug possa riguardare un errore di rete (in cui il DNS non è non solo disponibile, ma irraggiungibile, ovvero sottorete errata) e quando la rete ripristina successivamente questa funzione non cerca nuovamente il DNS.

Questo thead è stato qualche anno fa, forse questo bug è stato corretto in PHP?


0

Stavo riscontrando il seguente problema durante l'aggiornamento di Magento 2 all'ultima versione, quindi sospetto che sia il problema con la configurazione di 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

Risolto il problema riavviando il comando xampp tramite.

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

Quindi ha provato di composer updatenuovo il comando e ha funzionato come un incantesimo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.