我遇到某个目标域的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,但仍然没有运气..
我尝试过:
什么导致这个单一域名无法解决?
答案 0 :(得分:18)
IMO这是从OS和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 /解析器错误。
答案 1 :(得分:1)
您的“localhost”无法解析名称www.google.com,这意味着您的计算机无法/无法访问有效的DNS服务器。
尝试在该计算机的控制台上ping google.com以验证这一点。
答案 2 :(得分:1)
使用curl
代替fopen
和file_get_content
更灵活地打开网页。
答案 3 :(得分:1)
getaddrinfo 失败:没有这样的主机是已知的
上述错误是由于.env文件中的Database Host (DB_HOST)错误造成的
打开.env文件并特别检查这个env变量
DB_HOST=localhost
DB_DATABASE=database_name
DB_USERNAME=database_username
DB_PASSWORD=database_password
答案 4 :(得分:0)
我发现一个奇怪的事情是必须设置环境变量SYSTEMROOT
,否则{10}将在Windows 10上失败。
答案 5 :(得分:0)
您的目标域可能拒绝向您发送信息。这可以用作基于浏览器代理或任何其他标头信息的过滤器。 这是对机器人,搜寻器或任何有害应用程序的防御。
答案 6 :(得分:-4)
导致此错误的原因是以下一行
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';