Ошибка PHP: php_network_getaddresses: getaddrinfo не удалось: (при получении информации с другого сайта.) - PullRequest
27 голосов
/ 08 июня 2011

Пытаясь получить информацию из внешнего источника, я получаю следующую ошибку:

Предупреждение : php_network_getaddresses: getaddrinfo fail: Временный сбой в разрешении имени в строке #...

Вчера все было хорошо, так что случилось с этим скриптом, который не работает и выдает ошибку выше?Любое решение или подсказка, чтобы решить эту проблему?

$uri = "http://api.hostip.info/?ip=$ip&position=true";

$dom->load($uri);

Я также пытался преобразовать DNS в IP, но затем я получаю предупреждение: failed to open

$uri = "174.129.200.54/?ip=$ip&position=true";

Я пытался удалитьhttp но я все еще получаю вышеуказанную ошибку.

Ответы [ 7 ]

34 голосов
/ 08 июня 2011

Это потому, что вы не можете разрешить имя хоста. Возможно, проблемы с DNS, хост недоступен ...

попробуйте использовать IP-адрес вместо имени хоста ... пропинговать это имя хоста ... nslookup it...

7 голосов
/ 15 июня 2011

В следующем файле httpd.conf настройте ServerName правильно.

/etc/httpd/conf/httpd.conf

Как показано ниже:

ServerName 127.0.0.1:80

или

ServerName sitename

Это решило похожую проблему, с которой я столкнулся.

4 голосов
/ 08 мая 2017

В моем случае (моя машина - Ubuntu 16), я добавляю файл /etc/resolvconf/resolv.conf.d/base, добавляя строки ниже ns.

nameserver 8.8.8.8
nameserver 4.2.2.1
nameserver 2001:4860:4860::8844
nameserver 2001:4860:4860::8888

затем запустите скрипт обновления,

resolvconf -u
3 голосов
/ 08 июня 2011

Я полагаю, что используемые вами кэширующие DNS-серверы не работают должным образом (или DNS-сервер для разрешаемого домена не работает должным образом).Вы можете попытаться исправить прежнюю возможность.

У вас есть как минимум 2 сервера имен, зарегистрированных на вашем сетевом адаптере?Вы можете всегда менять свой компьютер, чтобы использовать другой кеширующий DNS-сервер, чтобы исключить это.Попробуйте Google:

8.8.8.8
8.8.4.4
1 голос
/ 08 июня 2011

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

Использование IP-адреса вместо имени хоста будет работать только для домена по умолчанию на удаленном хосте.

Что происходит при попытке использования www.google.com (или его IP-адреса))?Если вы все еще не можете подключиться, то это как-то связано с сетью между вашим сервером и внешним миром.

0 голосов
/ 01 июля 2019

Хотя я не использовал эту точную функцию, я получил ту же ошибку.

В моем случае мне просто пришлось удалить протокол.

Вместо $uri = "http://api.hostip.info/?ip=$ip&position=true";

Использовать $uri = "api.hostip.info/?ip=$ip&position=true";

И потом все работало нормально

0 голосов
/ 10 апреля 2018

Хотя это старая ветка, я недавно столкнулся с той же ошибкой при запуске nslookup в CentOS 7, и поиск в Google привел меня к некоторым дискуссиям в SO, включая эту. Однако добавление записей серверов имен только в /etc/resolv.conf не помогло, так как значения сервера имен в resolv.conf были перезаписаны NetworkManager с DNS-серверами имен по умолчанию, которые находятся в профиле eth, связанном с конфигурацией IP Ethernet.

Как упоминалось @ m-canvar, установите следующие записи в /etc/resolv.conf

search yourdomain.com
nameserver 8.8.8.8
nameserver 4.2.2.1
nameserver 8.8.4.4

Чтобы предотвратить перезапись этих записей NetworkManager, существует два подхода:

Вариант 1: либо установить NM_CONTROLLED = no в профиле eth, связанном с профилем IPv4 / IPv6.

Вариант 2: отключить запуск службы NetworkManager.

chkconfig NetworkManager off
service NetworkManager stop

Более подробную информацию можно найти в моем сообщении об этой ошибке и ее решении .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...