Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php dns_get_mx,dns_get_记录并检查dnsrr don';t与MX一起工作(与A一起工作)_Php_Dns - Fatal编程技术网

Php dns_get_mx,dns_get_记录并检查dnsrr don';t与MX一起工作(与A一起工作)

Php dns_get_mx,dns_get_记录并检查dnsrr don';t与MX一起工作(与A一起工作),php,dns,Php,Dns,我试图验证给定域中是否存在MX记录,但什么都不起作用 // prepare the hostname $hostname = 'gmail.com'; $hostname = idn_to_ascii($hostname);//php.net/manual/function.checkdnsrr.php#113537 $hostname = sprintf('%s.', $hostname);//php.net/manual/function.checkdnsrr.php#119969 // p

我试图验证给定域中是否存在MX记录,但什么都不起作用

// prepare the hostname
$hostname = 'gmail.com';
$hostname = idn_to_ascii($hostname);//php.net/manual/function.checkdnsrr.php#113537
$hostname = sprintf('%s.', $hostname);//php.net/manual/function.checkdnsrr.php#119969
// perform the checks
dns_get_mx($hostname, $dns_get_mx); // a.k.a. getmxrr()
$dns_get_record = dns_get_record($hostname, DNS_MX);
$checkdnsrr = checkdnsrr($hostname, 'MX');
// output the result
var_dump(array(
    'hostname' => $hostname,
    'dns_get_mx' => $dns_get_mx,
    'dns_get_record' => $dns_get_record,
    'checkdnsrr' => $checkdnsrr,
));
以下是我得到的信息(和
gmail.com
,分别试用):

如果我将
MX
替换为
A
,则返回正确的IP地址,并返回
true

日志中没有任何内容(除了上面的警告),谷歌也没有帮助。如何调试这个


UPD问题出现在我的本地VirtualBox环境中(PHP 5.6.39);实际上,在生产服务器(PHP7.3.11)上,一切都可以正常工作。

VirtualBox似乎正在覆盖
/etc/resolv.conf
,这会弄乱来宾计算机上的DNS

我目前的解决方案是:

echo "nameserver 1.1.1.1" > /etc/resolv.conf

某些域可能没有MX记录。另外,可能是因为您使用哪些名称服务器来获取回复?你试过其他域名吗?@Danielprotopov我试过几个域名,包括我们的域名,我确信这些域名可以正常工作。至于bug,他会尝试是否为一个不存在的域,而我的域正在工作,如果我从MX更改为a,PHP只返回值fine@PatrickMevzek我不知道,如何找到或使用不同的名称服务器?阅读文档时,上述函数不允许我指定自己的名称服务器
echo "nameserver 1.1.1.1" > /etc/resolv.conf