Error temporal en la resolución de nombres: error de búsqueda de nombre de host

10

Tengo un script en PHP que ha estado funcionando bien durante meses. Recientemente dejó de funcionar.

Este script se conecta a gmail para enviar un correo electrónico a mis clientes.

Recientemente, comencé a recibir este error cuando ejecuto el 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'

Tenga en cuenta que esto fue con cero cambios de código.

He mirado mi resolv.conf y parece estar bien:

nameserver 208.67.222.222

Puedo hacer ping a 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  

Puedo conectarme a través de Lynx a Google y otros sitios sin ningún problema.

He iniciado sesión en mi cuenta de Gmail sin problemas (tampoco hay captcha).

Estoy al final del ingenio. ¿Alguien tiene alguna idea?

G-Man

GeoffreyF67
fuente
¿El guión falla todo el tiempo? O solo ocasionalmente?
MikeyB
Falla todo el tiempo.
GeoffreyF67
Encontré un problema similar con mi daemon escrito en C que realiza reconexiones TCP periódicas. En algún momento, getaddrinfo () de repente comenzó a devolver el error. Cuando miré el servidor, no se enviaron solicitudes DNS, y agregar la entrada requerida en / etc / hosts no ayudó. Claro, reiniciar ayuda, pero como Xerxes señaló correctamente, esta no es la solución real. Inicialmente pensé que el problema era causado por la falta de la llamada freeaddrinfo (), pero no pude reproducirlo con una aplicación de prueba. De todos modos, he agregado llamadas de limpieza adecuadas al demonio y voy a monitorearlo de cerca.
Linulin

Respuestas:

13

PHP tiene problemas para acceder a / etc / hosts o /etc/resolv.conf: hay un problema de larga data en PHP relacionado con este error específico. La solución es intentar reiniciar Apache o lo que sea que esté invocando PHP, o asegurarse de que / etc / hosts y /etc/resolv.conf sean legibles por lo que invoca PHP.


fuente
Reiniciar hizo el truco!
GeoffreyF67
44
Sí, pero ¿cuánto tiempo falta para el próximo reinicio? Buscaría más y encontraría la causa del problema.
Jerjes
Wow que estaba teniendo el mismo problema, pero al parecer el servicio httpd restart es la solución ... pero todavía no entiende lo que hace que este ...
J_Wesker
6

Acabo de experimentar el mismo error y

service httpd restart

Hizo el truco...


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

Ahora, intente usar Xdebug para ver dónde está exactamente el problema ...

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

¿Algo bueno en los registros?

Jerjes
fuente
1

Agregue código de depuración antes de esa línea para asegurarse de que el script pueda resolverlo correctamente.

Matt Simmons
fuente
0

Hoy he tenido esta falla, sin embargo, ocurrió después de un evento específico que me hace pensar que podría haber encontrado la causa.

Debido a algunos problemas con el equipo de red, en realidad reinicié por servidor y cuando volvió a funcionar, había una conexión de red incorrecta en el cableado, lo que significa que no había ningún servidor DNS disponible.

Mientras tanto, se llamó a esta función php y después de esto nunca volvió a funcionar hasta que reinicié httpd.

Creo que el error puede estar relacionado con una falla de la red (donde el DNS no solo no está disponible, sino que no es accesible, es decir, una subred incorrecta) y cuando la red se recupera posteriormente, esta función no busca el DNS nuevamente.

Este thead fue hace unos años, ¿tal vez este error ahora está solucionado en PHP?

Charlie
fuente
0

Estaba teniendo el siguiente problema al actualizar magento 2 a la última versión, por lo que sospecho que es el problema con la configuración de 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

Lo resolvió reiniciando el comando xampp through.

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

Luego probé el composer updatecomando nuevamente y funcionó de maravilla.

Umar Yousaf
fuente