2012-09-19 55 views
1

有時,當我調用gethostbyaddr()時,它會返回正確的主機名稱,但有時會返回IP地址,我知道它的設計目的是在調用無法解析主機名稱。PHP(Windows和Linux) - 獲取基於IP地址的主機名稱

這是絕對關鍵我得到的主機名稱爲所有IP地址的被動態(第2天租賃),所以我需要的主機名,這樣我可以有一個有效的主鍵,當我保存主機名稱和IP配對到數據庫。我實際上並排有兩臺打印機和兩臺計算機,每個PHP可以解析爲一個主機名,另一臺打印機和計算機返回IP地址。

如何讓PHP解析所有設備的主機名?

另外,有誰知道它是如何解決主機名? DNS? WINS?

我可以在這兩臺打印機上運行任何測試,以檢查其IPv4配置(如有必要)。

+2

如果你有挖掘可用,你可以嘗試$ host = exec('dig ...');相反,但你有沒有檢查過兩臺機器的域名服務器和網關設置?他們匹配嗎?該功能對於兩臺機器的工作方式都是相同的,php的工作方式相同,似乎主要區別可能是機器本身的網絡設置。 – Peter

回答

1

gethostbyaddr()返回成功時的主機名,未修改的ip_address失敗或錯誤輸入時返回FALSE。

在大約20臺靜態ip分配機器和大約5臺打印機上檢查功能後,它返回了機器和打印機的IP地址,這些機器或打印機已關閉或配置不同,例如,路由器或網關。

因此,您需要檢查哪些策略限制gethostbyaddr()從您的一臺計算機和打印機返回主機名。