我想编写一些调试窗口,这些窗口仅在我访问该页面时显示。我有一个包含我的 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 设置才能运行?
我的主要问题是,这个功能完全损坏了吗?
最佳答案
- 请务必检查连接到端口 53 (DNS) 的能力
- 您可以通过尝试从 PHP 中尝试
passthru('nslookup google.com 2>&1')
来进一步调试。这将显示 stdout 和 stderr 的完整输出,因为它可能包含更多信息。
关于php - 使用 gethostbyname 解析 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43867121/