使用gethostbyname解析IP

时间:2017-05-09 10:17:13

标签: php

我想编写一些只在我访问页面时显示的调试窗口。我有一个包含我的IP的DDNS地址。在服务器上询问此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设置才能运行?

我的主要问题是,这个功能完全坏了吗?

1 个答案:

答案 0 :(得分:2)

  1. 请务必检查连接端口53(DNS)的能力
  2. 您可以通过从PHP尝试passthru('nslookup google.com 2>&1')来进一步调试。这将显示stdout和stderr的完整输出,因为它可能包含更多信息。