У меня проблемы с 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, но все равно не повезло ..
Я пробовал:
Что может привести к тому, что этот единственный домен не будет разрешен?
ИМО – это другой способ разрешить имя из ОС и 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.
Ваш «локальный хост» не может разрешить имя http://www.google.com, что означает, что ваш компьютер не может / не может достигнуть допустимого DNS-сервера.
Попробуйте выполнить ping google.com на консоли этой машины, чтобы проверить это.
Более гибко использовать curl
вместо fopen
и file_get_content
для открытия веб-страницы.
Странная вещь, которую я обнаружил, заключается в том, что переменная среды SYSTEMROOT
должна быть установлена иначе, иначе getaddrinfo()
будет работать в Windows 10.
То, что вызвало эту ошибку на моей стороне, было следующей строкой
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';