Подтвердить что ты не робот

Ошибка PHP: php_network_getaddresses: getaddrinfo не удалось: (при получении информации с другого сайта.)

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

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

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

$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, но все еще получаю указанную выше ошибку.

4b9b3361

Ответ 1

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

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

Ответ 2

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

/etc/httpd/conf/httpd.conf

Как ниже:

ServerName 127.0.0.1:80

или

ServerName sitename

Это разрешило аналогичную проблему, с которой я столкнулся.

Ответ 3

В моем случае (моя машина 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

затем запустите обновление script,

resolvconf -u

Ответ 4

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

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

8.8.8.8
8.8.4.4

Ответ 5

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

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

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

Ответ 6

Хотя это старая ветка, я недавно столкнулся с той же ошибкой при запуске 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

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

Ответ 7

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

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

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

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

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