为什么dns_get_record()PHP函数返回空数组?

时间:2015-06-08 14:10:54

标签: php arrays dns-get-record

我的一个网站上有一个脚本,它使用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 。 什么事情的朋友?

3 个答案:

答案 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');