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

PHP php_network_getaddresses: getaddrinfo не удалось: такой хост не известен

У меня проблемы с DNS с определенным целевым доменом. Я использую fopen() (но такую ​​же проблему с другими функциями), чтобы получить изображение, но я получаю эту ошибку: Warning: fopen(): php_network_getaddresses: getaddrinfo failed: No such host is known

Я могу выполнить ping или nslookup из домена из командной строки, но по какой-то причине php выдает эту ошибку. Когда я пытаюсь fopen('http://www.google.com', r); или другие домены, все идет нормально. Но вышеупомянутый домен просто не разрешит с PHP. Я сбросил DNS, перезапустил Apache, но все равно не повезло..

Я пробовал с:

  • Windows 7, Apache 2.2 PHP 5.3.6
  • Сервер Windows 2008r2, Apache 2.2 PHP 5.3.6

Что может привести к тому, что этот единственный домен не будет разрешен?

4b9b3361

Ответ 1

IMO это другой способ разрешить имя из ОС и PHP.

Try:

echo gethostbyname("host.name.tld");

и

var_export (dns_get_record ( "host.name.tld") );

или

$dns=array("8.8.8.8","8.8.4.4");
var_export (dns_get_record ( "host.name.tld" ,  DNS_ALL , $dns ));

Вы должны найти ошибку DNS/resolver.

Ответ 2

Ваш "локальный хост" не может разрешить имя www.google.com, что означает, что ваш компьютер не может/не может достигнуть допустимого DNS-сервера.

Попробуйте выполнить ping google.com на консоли этой машины, чтобы проверить это.

Ответ 3

Более гибко использовать curl вместо fopen и file_get_content для открытия веб-страницы.

Ответ 4

Странно, что я обнаружил, что переменная окружения SYSTEMROOT должна быть установлена ​​иначе getaddrinfo() будет терпеть неудачу в Windows 10.

Ответ 5

В результате этой ошибки на моей стороне появилась следующая строка

include_once dirname(__FILE__) . './Config.php';

Мне удалось понять, что это был преступник, когда я добавил строки:

//error_reporting(E_ALL | E_DEPRECATED | E_STRICT);
//ini_set('display_errors', 1);

ко всем моим php файлам.

Чтобы решить проблему path issue, я смог связать строку с нарушением:

include_once dirname(__FILE__) . '/Config.php';