Php dns_get_mx,dns_get_记录并检查dnsrr don';t与MX一起工作(与A一起工作)
我试图验证给定域中是否存在MX记录,但什么都不起作用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
// 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