我的一个网站上有一个脚本,它使用dns_get_record()
PHP函数获取DNS记录。但是这个函数返回一个空数组大约2周。我写了一个如下测试脚本:
<?php
$result = dns_get_record("php.net");
if (count($result)) {
print_r($result);
} else {
echo 'Empty Array';
}
?>
它在我的本地计算机上运行良好,但是当我在服务器上测试它时,它会返回 Empty Array 。 什么事情的朋友?
答案 0 :(得分:0)
检查DNS端口是否在服务器上打开,它需要TCP / UDP端口53。
您可以通过键入以下内容检查您的服务器是否可以进行出站DNS查询
dig exmaple.com
,看看你是否得到了预期的回应。
检查服务器是否设置了DNS服务器,然后按照之前的建议检查防火墙。
最后,值得检查每台机器上的PHP版本吗?
答案 1 :(得分:0)
客户端需要dns和dhcp或硬编码填充空白。
服务器通常只对任何响应其ip addr定向流量的内容视而不见
答案 2 :(得分:0)
项目在docker容器中运行时发生类似的问题。
为解决此问题,我们使用Net_DNS2代替了本机dns_get_record
,并直接指定了应使用哪个DNS服务器。
$dnsResolver = new Net_DNS2_Resolver([
'nameservers' => ['8.8.8.8']
]);
$dnsResolver->query('php.net', 'NS');