PHP php_network_getaddresses: getaddrinfo не удалось: такой хост не известен - PullRequest
27 голосов
/ 21 ноября 2011

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

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

Я пробовал с:

  • Windows 7, Apache 2.2 PHP 5.3.6
  • Windows server 2008r2, Apache 2.2 PHP 5.3.6

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

Ответы [ 5 ]

18 голосов
/ 29 ноября 2011

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

Попробуйте:

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.

1 голос
/ 24 августа 2015

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

1 голос
/ 14 декабря 2011

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

Попробуйте проверить связь с google.com на консоли этого компьютера.

0 голосов
/ 18 декабря 2017

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

0 голосов
/ 31 октября 2015

Что вызвало эту ошибку на моей стороне, была следующая строка

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';
...