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
Что может привести к тому, что этот единственный домен не будет разрешен?
Ответы
Ответ 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';