1

我的一个网站中有一个脚本,它使用dns_get_record()PHP 函数获取 DNS 记录。但是这个函数返回一个空数组大约是 2 周。我写了一个如下的测试脚本:

<?php
$result = dns_get_record("php.net");
if (count($result)) {
    print_r($result);
} else {
    echo 'Empty Array';
}
?>

它在我的本地机器上运行良好,但是当我在我的服务器上测试它时,它返回空数组作为结果。
朋友怎么了?

4

3 回答 3

0

检查服务器上的 DNS 端口是否打开,它需要 TCP/UDP 端口 53。

您可以通过键入以下内容来检查您的服务器是否可以进行出站 DNS 查询

dig exmaple.com看看你是否得到了预期的回应。

检查服务器是否设置了 DNS 服务器,然后按照之前的建议检查防火墙。

最后,值得检查每台机器上的 PHP 版本吗?

于 2015-06-08T14:21:23.653 回答
0

客户需要 dns 和 dhcp 或硬编码填空。

服务器通常对仅响应其 ip addr 定向流量的任何事情视而不见

于 2015-06-08T14:27:45.593 回答
0

当项目在 docker 容器中运行时有类似的问题。

为了解决这个问题,我们使用Net_DNS2而不是 native dns_get_record,直接指定应该使用哪个 DNS 服务器。

$dnsResolver = new Net_DNS2_Resolver([
    'nameservers' => ['8.8.8.8']
]);
$dnsResolver->query('php.net', 'NS');
于 2019-08-08T13:23:39.087 回答