php - 使用 gethostbyname 解析 IP

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

关于php - 使用 gethostbyname 解析 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43867121/

相关文章:

php - 如何使用php内置的http服务器+mysql?

php_excel07-如何将一行的属性复制到下一行

php - $this 变量在 PHP 中的行为

php - 如何获取按钮以在 jQuery 确认对话框上执行操作?

php - 使用 OO PHP 优化 SQL 请求

javascript - 对 json 数组执行 .length 返回未定义

php - SQL Join 的 NULL 输出

php - 从 20 个一组中选择最多 5 个整数

php - 如何创建一个下拉菜单,将数组中的数据放入文本字​​段中

php - Laravel - 检查@yield 是否为空