2017-05-09 62 views
2

我想編寫一些調試窗口,只有當我訪問該頁面時才顯示。我有一個包含我的IP的DDNS地址。該IP在服務器上被詢問。或者讓我們說應該問。但是解決問題就出現了。使用gethostbyname來解析IP

我試圖通過解析IP:

echo gethostbyname("google.com"); 

不管我用什麼域名,它總是失敗,只記錄返回域。它返回IPv4地址或失敗時包含未修改主機名的字符串。

我也試過:

function getAddrByHost($host, $timeout = 3) { 
    $query = "nslookup -timeout=$timeout -retry=1 $host"; 
    if(preg_match('/\nAddress: (.*)\n/', $query, $matches)) 
     return trim($matches[1]); 
    return $host; 
} 
echo getAddrByHost("google.com"); 

這其中有相同的結果。在我的電腦上執行nslookup -timeout=$timeout -retry=1 google.com在我的命令行中工作正常。但我需要它的腳本,所以這並不能幫助我:)

我期望一個正常的IPv4地址。

此功能是否需要特殊的php.ini設置才能運行?

我的主要問題是,這個功能是否完全破壞?

+0

你不能找位置標題嗎? 'gethostbyname($ headers ['Location'])' – Pogrindis

+0

以及變量$ headers應該從哪裏來? :D – Dwza

+0

是的'get_headers'方法,但實際上在這裏測試,它也不工作! :| – Pogrindis

回答

2
  1. 一定要檢查連接到端口53(DNS)
  2. 您可以通過從PHP試圖passthru('nslookup google.com 2>&1')進一步調試的能力。這將顯示stdout和stderr的完整輸出,因爲它可能包含更多信息。