2011-11-21 73 views
22

我遇到了DNS问题与某个目标域。我使用fopen()(但与其他功能相同的问题)中检索图像,但我得到这个错误: Warning: fopen(): php_network_getaddresses: getaddrinfo failed: No such host is knownPHP php_network_getaddresses:getaddrinfo失败:没有这样的主机是已知的

我能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

什么会导致这个单一域无法解析?

+2

也许这就是有用的:http://en.wikipedia.org/wiki/Getaddrinfo - 你应该询问你的系统管理员有关这个问题。 – hakre

+0

也许这个域名确实不存在,或者目标域名的DNS服务器对您的服务器不可用。不过你可以试试'ipconfig/flushdns'来清除你的缓存。 – Polynomial

+0

你能举出一个更具体的URL例子吗? (你可以去除域名) – Narf

回答

14

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 /变压器误差。

1

您的“本地主机”无法解析名称www.google.com,这意味着您的机器无法访问有效的DNS服务器。

尝试在该机器的控制台上ping ping google.com以验证此操作。

0

使用curl替代fopenfile_get_content打开网页更灵活。

-4

了什么在我身边导致该错误是下面的行

include_once dirname(__FILE__) . './Config.php'; 

我设法实现它是罪魁祸首,当我添加了几行:

//error_reporting(E_ALL | E_DEPRECATED | E_STRICT); 
//ini_set('display_errors', 1); 

我所有的PHP文件。

为了解决path issue我canged违规行:

include_once dirname(__FILE__) . '/Config.php'; 
+0

您的原始行和“更改”行现在是相同的。 – Noumenon

+1

你的回答似乎没有任何关系..你是否也收到了警告:警告:fopen():php_network_getaddresses:getaddrinfo失败:使用include时没有这样的主机吗?很确定这是不可能的 – Richard

+0

我意识到,这个错误导致无数不相关的问题,这就是为什么我发布它作为许多不同问题的答案。 – nyxee

0

我发现这是环境变量SYSTEMROOT必须否则置了一个奇怪的getaddrinfo()将在Windows 10失败

相关问题