Тимчасовий збій у дозволі імені: Помилка пошуку імені хоста


10

У мене є сценарій в 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'

Майте на увазі, це було з нульовими змінами коду.

Я подивився на свою резолюцію.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  

Я можу підключитися через рись до google та інших сайтів без проблем.

Я ввійшов у свій акаунт gmail без проблем (там також немає капчу).

Я в дотепному кінці. У когось є якісь ідеї?

G-Man


Є чи сценарій невдача все час? Або просто зрідка?
MikeyB

Збій щоразу.
ДжеффріF67

У мене подібний випадок зіткнувся з моїм демоном, написаним на C, який виконує періодичні підключення TCP. У якийсь момент гетадрінфо () раптово почав повертати помилку. Коли я подивився на сервер, жодні запити DNS не надсилалися, і додавання необхідного входу в / etc / hosts не допомогло. Звичайно, перезапуск допомагає, але як справедливо зазначив Xerxes, це не справжнє рішення. Спочатку я вважав, що проблема була викликана відсутнім викликом freeaddrinfo (), але я не зміг її відтворити за допомогою тестової програми. У всякому разі, я додав належних викликів очищення до демона і збираюся уважно стежити за ним.
Лінулін

Відповіді:


13

У PHP виникають проблеми з доступом до / etc / hosts або /etc/resolv.conf: у PHP існує давня проблема, пов’язана з цією конкретною помилкою. Виправлення полягає в тому, щоб спробувати перезапустити Apache або все, що викликає PHP, або переконатися, що / etc / hosts та /etc/resolv.conf читаються тим, що викликає PHP.


Перезапуск зробив трюк!
ДжеффріF67,

4
Так, але скільки часу до наступного перезавантаження належить? Я б заглянув далі і знайшов першопричину проблеми.
Ксеркс

Нічого собі, у мене виникло те саме питання, але, очевидно, перезапуск служби httpd - це рішення ... але я все ще не розумію, що викликає це ...
J_Wesker

6

Я просто зазнав ту саму помилку і

service httpd restart

зробив трюк ...


2
% 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);
?>

Щось добре в колодах?


1

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


0

У мене сьогодні була така помилка, проте вона сталася після конкретної події, яка змушує мене думати, що я, можливо, знайшов причину.

Через деякі проблеми з мережевим обладнанням, я фактично перезавантажився сервером, і коли він повернувся, у кабелі виникло неправильне мережеве з'єднання, що означає відсутність сервера DNS.

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

Я думаю, що помилка може бути пов'язана з відмовою в мережі (де DNS не тільки недоступний, але недоступний, тобто неправильна підмережа), і коли мережа згодом відновить цю функцію, знову не шукає DNS.

Ця теда була кілька років тому, можливо, ця помилка тепер виправлена ​​в PHP?


0

У мене виникла наступна проблема під час оновлення 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команду ще раз, і це спрацювало як шарм.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.