Php 使用gethostbyname解析IP地址

Php 使用gethostbyname解析IP地址,php,Php,我想编写一些调试窗口,这些窗口只在我访问页面时显示。我有一个包含我的IP的DDNS地址。在服务器上询问此IP。或者说应该问一下。但是问题来了 我尝试使用以下方法解析IP: echo gethostbyname("google.com"); 无论我使用哪个域,它总是失败,并且只返回文档中记录的域。失败时,它返回IPv4地址或包含未修改主机名的字符串 我还尝试: function getAddrByHost($host, $timeout = 3) { $query = "nslookup

我想编写一些调试窗口,这些窗口只在我访问页面时显示。我有一个包含我的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");
这一个有相同的结果。在我的pc上的命令行中执行
nslookup-timeout=$timeout-retry=1 google.com
,效果很好。但我需要它作为脚本,所以这对我毫无帮助:)

我需要一个正常的IPv4地址

此函数是否需要特殊的php.ini设置才能运行

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

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

  • 您不能查找位置标题吗
    gethostbyname($headers['Location'])
    变量
    $headers
    应该从哪里来DYeah使用了
    get_headers
    方法,但实际上在这里测试,它也不起作用!:|在我的google.com系统上,这两个功能都很好(自定义func和gethostbyname)。看起来运行PHP的用户可能存在连接问题。为什么不设置一个特殊的cookie来启用调试消息?