2017-05-09 107 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的完整输出,因为它可能包含更多信息。