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

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


person Richard    schedule 21.11.2011    source источник
comment
Возможно, это будет полезно: en.wikipedia.org/wiki/Getaddrinfo — и вы должны спросить своего системный администратор о проблеме.   -  person hakre    schedule 21.11.2011
comment
Возможно, домен действительно не существует, или DNS-сервер целевого домена недоступен для вашего сервера. Однако вы можете попробовать ipconfig /flushdns очистить кеш.   -  person Polynomial    schedule 21.11.2011
comment
Можете ли вы привести более конкретный пример URL? (вы можете удалить доменное имя)   -  person Narf    schedule 21.11.2011
comment
Если бы вы были под Linux, я бы сказал: дамп имени файла, затем попробуйте wget этот файл. Но винда....   -  person Olivier Pons    schedule 21.11.2011
comment
@Narf, я вообще не могу разрешить домен. Даже в корне. Из CMD проблем с разрешением домена нет. Однако из PHP я могу разрешать другие домены.. Своеобразно.. DNS уже очищен.   -  person Richard    schedule 21.11.2011
comment
@ Ричард, хорошо ... если даже fopen('http://domain.tld', 'r'); не работает - тогда, я думаю, проблема не в формате URL. Как настроено интернет-соединение сервера? Это через DHCP, статический IP или какой-то другой метод?   -  person Narf    schedule 21.11.2011
comment
Эй, чувак, у меня была такая же ошибка, кажется, это было из-за недопустимого адреса, такого как: localhostmysite вместо localhost/mysite. Возможно, ваша проблема вызвана аналогичной проблемой.   -  person Joshua Kissoon    schedule 27.01.2012


Ответы (7)


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

Пытаться:

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

а также

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

or

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

Вы должны найти какую-то ошибку DNS/преобразователя.

person Ivan Buttinoni    schedule 28.11.2011

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

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

person anil    schedule 14.12.2011

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

person Mostafa Lavaei    schedule 24.08.2015

Ваш целевой домен может отказаться отправлять вам информацию. Это может работать как фильтр на основе агента браузера или любой другой информации заголовка. Это защита от ботов, поисковых роботов и любых нежелательных приложений.

person Szektor    schedule 16.12.2019

Ошибка getaddrinfo: такой хост неизвестен

Вышеупомянутая ошибка вызвана ошибкой в ​​хосте базы данных (DB_HOST) в файле .env.

Откройте файл .env и специально проверьте эти переменные env.

DB_HOST=localhost
DB_DATABASE=database_name
DB_USERNAME=database_username
DB_PASSWORD=database_password
person Omkar Ghurye    schedule 26.07.2021

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

person bonger    schedule 17.12.2017

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

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';
person nyxee    schedule 31.10.2015
comment
Ваша исходная строка и измененная строка сейчас одинаковы. - person Noumenon; 01.11.2015
comment
Ваш ответ не кажется связанным вообще .. Вы также получили сообщение Warning: fopen(): php_network_getaddresses: getaddrinfo failed: No such host is known при использовании include? Уверен, что это невозможно - person Richard; 01.11.2015
comment
Я понял, что эта ошибка приводит к множеству не связанных между собой проблем, поэтому я опубликовал ее как ответ на множество разных проблем. - person nyxee; 05.11.2015