У меня есть скрипт на 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
команда снова, и это сработало как шарм.