2011-11-21 98 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失敗

相關問題