Назад | Перейти на главную страницу

Временный сбой при разрешении имен: ошибка поиска имени хоста

У меня есть скрипт на PHP, который месяцами работает нормально. Он недавно перестал работать.

Этот сценарий подключается к Gmail для отправки электронных писем моим клиентам.

Недавно я начал получать эту ошибку при запуске скрипта:

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'

Имейте в виду, это было без изменений кода.

Я просмотрел свой файл resolv.conf, и все в порядке:

nameserver 208.67.222.222

Я могу пинговать 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  

Я могу без проблем подключаться через lynx к Google и другим сайтам.

Я вошел в свою учетную запись gmail без проблем (там тоже нет капчи).

Я нахожусь в тупике. У кого-нибудь есть идеи?

G-Man

PHP не может получить доступ к / etc / hosts или /etc/resolv.conf: есть давняя проблема в PHP, связанной с этой конкретной ошибкой. Исправление состоит в том, чтобы попробовать перезапустить Apache или что-то, что вызывает PHP, или убедиться, что / etc / hosts и /etc/resolv.conf доступны для чтения тем, что вызывает PHP.

Я испытал ту же ошибку и

service httpd restart

сделали свое дело ...

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

Теперь попробуйте использовать Xdebug, чтобы узнать, где именно проблема ...

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

Что-нибудь хорошее в логах?

Добавьте код отладки перед этой строкой, чтобы убедиться, что сценарий может разрешить его правильно.

Сегодня у меня была эта ошибка, однако она произошла после определенного события, которое заставляет меня думать, что, возможно, я нашел причину.

Из-за некоторых проблем с сетевым оборудованием я фактически перезагрузил сервер, и когда он вернулся, в кабеле было неправильное сетевое соединение, что фактически означало, что DNS-сервер не был доступен.

Тем временем была вызвана эта функция php, и после этого она больше не работала, пока я не перезапустил httpd.

Я думаю, что ошибка может относиться к сбою сети (когда DNS не только недоступен, но и недоступен, т. Е. Неправильная подсеть), и когда сеть впоследствии восстанавливается, эта функция больше не ищет DNS.

Это было несколько лет назад, может быть, теперь эта ошибка исправлена ​​в PHP?

У меня возникла следующая проблема при обновлении magento 2 до последней версии, поэтому я подозреваю, что это проблема с конфигурацией 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

Решил это, перезапустив xampp через команду.

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

Затем попробовал composer update команда снова, и это сработало как шарм.