Php getmxrr()和checkdnsrr()的返回值错误

Php getmxrr()和checkdnsrr()的返回值错误,php,dns,Php,Dns,forgetmxrr($url,&$mxHosts)说明: 如果找到任何记录,则返回TRUE;如果未找到任何记录或发生错误,则返回FALSE 但对于某些域(例如www.yahoo.com,example.com.com),它只返回true,但返回参数$mxHosts为空。两个域都没有MX记录checkdnsrr()也返回true 我比较了这些域的DNS条目,发现它们都有一个CNAME条目,而我测试过的其他域和功能正常的域则没有 为什么getmxrr()和checkdnsrr()给出了错误的结果值

for
getmxrr($url,&$mxHosts)
说明:

如果找到任何记录,则返回TRUE;如果未找到任何记录或发生错误,则返回FALSE

但对于某些域(例如www.yahoo.com,example.com.com),它只返回true,但返回参数
$mxHosts
为空。两个域都没有MX记录
checkdnsrr()
也返回true

我比较了这些域的DNS条目,发现它们都有一个CNAME条目,而我测试过的其他域和功能正常的域则没有


为什么
getmxrr()
checkdnsrr()
给出了错误的结果值?这和CNAME有什么关系吗?

是的,但是如果你在www.google.com上使用你的程序,它会工作。而且www.google.com也不是域名根。@FrancoisBourgeo:我试过www.google.com,但不起作用。它显示了空。然后我试着像阿卡姆提到的那样(没有www),效果很好。@Bhaviksah:正如我在问题中试图解释的那样:$mxHosts(或阿卡姆回答中的$out)的内容总是正确的。www.yahoo.com没有MX->empty;yahoo.com有一些->你得到的结果。问题是函数的返回值。它返回true,而它应该返回false,因为没有MX记录。@弗朗索瓦·布尔乔亚:哦,是的。我现在明白了。我误解了这个问题。请接受我的道歉。@弗朗索瓦·布尔乔亚:真奇怪。对于www.yahoo.com,返回true;对于www.google.com,返回false
<?php
getmxrr ('yahoo.com', $out);
print_r($out);

$a = checkdnsrr('yahoo.com', 'MX');
var_dump($a);

Array
(
    [0] => mta7.am0.yahoodns.net
    [1] => mta5.am0.yahoodns.net
    [2] => mta6.am0.yahoodns.net
)
bool(true)
<?php
getmxrr ('www.yahoo.com', $out);
print_r($out);

Array
(
)
bool(true)