Falha temporária na resolução de nomes: falha na pesquisa de nome do host


10

Eu tenho um script em PHP que está funcionando bem há meses. Recentemente, parou de funcionar.

Este script se conecta ao gmail para enviar um email para meus clientes.

Recentemente, comecei a receber esse erro ao executar o 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'

Lembre-se de que isso ocorreu com zero alterações de código.

Eu olhei para o meu resolv.conf e parece estar ok:

nameserver 208.67.222.222

Posso executar 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  

Eu posso conectar via lynx ao google e outros sites sem nenhum problema.

Eu entrei na minha conta do Gmail sem problemas (nenhum captcha lá também).

Estou no final. Alguém tem alguma ideia?

G-Man


É o script falhar toda a hora? Ou apenas ocasionalmente?
31509 MikeyB

Falha toda vez.
GeoffreyF67

Eu encontrei um problema semelhante com meu daemon escrito em C, que executa reconexões TCP periódicas. Em algum momento, o getaddrinfo () de repente começou a retornar o erro. Quando olhei para o servidor, nenhuma solicitação de DNS estava sendo enviada e a adição da entrada necessária no / etc / hosts não ajudou. Claro, reiniciar ajuda, mas, como Xerxes observou com razão, essa não é a solução real. Inicialmente, pensei que o problema foi causado por falta de chamada freeaddrinfo (), mas não consegui reproduzi-lo com um aplicativo de teste. De qualquer forma, adicionei chamadas de limpeza adequadas ao daemon e vou monitorá-lo de perto.
Linulin

Respostas:


13

O PHP está tendo problemas para acessar o / etc / hosts ou o /etc/resolv.conf: há um problema antigo no PHP relacionado a esse erro específico. A correção é tentar reiniciar o Apache ou o que quer que esteja chamando o PHP ou garantir que / etc / hosts e /etc/resolv.conf sejam legíveis pelo que está chamando o PHP.


Reiniciar fez o truque!
GeoffreyF67

4
Sim, mas quanto tempo antes da próxima reinicialização? Eu procuraria mais longe e encontraria a causa raiz do problema.
Xerxes

Wow eu estava tendo o mesmo problema, mas aparentemente service httpd restart é a solução ... mas eu ainda não entende o que faz com que esse ...
J_Wesker

6

Acabei de experimentar o mesmo erro e

service httpd restart

fez o truque ...


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

Agora, tente usar o Xdebug para ver exatamente onde está o problema ....

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

Alguma coisa boa nos logs?


1

Adicione o código de depuração antes dessa linha para garantir que o script possa resolvê-lo corretamente.


0

Eu tive essa falha hoje, no entanto, ocorreu após um evento específico que me faz pensar que posso ter encontrado a causa.

Devido a alguns problemas no equipamento de rede, eu realmente reiniciei o servidor e, quando ele voltou, havia uma conexão de rede incorreta no cabeamento, o que significa que não havia servidor DNS disponível.

Enquanto isso, essa função php foi chamada e depois disso nunca mais funcionou até que eu reiniciei o httpd.

Eu acho que o bug pode estar relacionado a uma falha de rede (onde o DNS não está disponível não apenas, mas inacessível, ou seja, sub-rede incorreta) e quando a rede recupera posteriormente essa função, não procura o DNS novamente.

Este tópico foi há alguns anos atrás, talvez este bug esteja corrigido no PHP?


0

Eu estava tendo o seguinte problema ao atualizar o magento 2 para a versão mais recente, então suspeito que seja o problema com a configuração do 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

Resolva-o reiniciando o comando xampp through.

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

Então tentei o composer updatecomando novamente e funcionou como um encanto.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.