gpt4 book ai didi

php - checkdnsrr 在 Windows 上总是返回 false

转载 作者:可可西里 更新时间:2023-11-01 13:26:59 29 4
gpt4 key购买 nike

我正在使用 checkdnsrr在带有 PHP 5.3 的 Windows 上,它始终返回 false。

dns_get_record ,但是,有效。

echo ("test.com dns check: ". checkdnsrr("test.com","NS")); //false!!
print_r(dns_get_record("test.com",DNS_NS)); //returns the right data

最佳答案

我想我找到了一些东西(在 Windows 上试过,PHP 5.3.0,来自 CLI):

当我这样做时:

$tests = array('A', 'MX', 'NS', 'SOA', 'PTR', 'CNAME', 'AAAA', 'A6', 'SRV', 'NAPTR', 'TXT', 'ANY');
foreach ($tests as $type) {
echo " Type = $type : ";
var_dump(checkdnsrr("test.com", $type));
}

我明白了:

C:\bin\php-5.3\tests>c:\bin\php-5.3\php.exe test-dns.php
bool(true)
test.com dns check:
Type = A : bool(false)
Type = MX : bool(false)
Type = NS : bool(false)
Type = SOA : bool(false)
Type = PTR : bool(false)
Type = CNAME : bool(false)
Type = AAAA : bool(false)
Type = A6 : bool(false)
Type = SRV : bool(false)
Type = NAPTR : bool(false)
Type = TXT : bool(false)
Type = ANY : bool(false)

所以,没有一个测试给出“真”:-(


但是当我尝试使用另一个域时:

$tests = array('A', 'MX', 'NS', 'SOA', 'PTR', 'CNAME', 'AAAA', 'A6', 'SRV', 'NAPTR', 'TXT', 'ANY');
foreach ($tests as $type) {
echo " Type = $type : ";
var_dump(checkdnsrr("pascal-martin.fr", $type));
}

(测试这个是因为我知道上面有什么,想测试一个特定的想法^^)

我明白了:

C:\bin\php-5.3\tests>c:\bin\php-5.3\php.exe test-dns.php
bool(true)
test.com dns check:
Type = A : bool(true)
Type = MX : bool(true)
Type = NS : bool(true)
Type = SOA : bool(true)
Type = PTR : bool(true)
Type = CNAME : bool(true)
Type = AAAA : bool(true)
Type = A6 : bool(true)
Type = SRV : bool(true)
Type = NAPTR : bool(true)
Type = TXT : bool(true)
Type = ANY : bool(true)

所以,该功能似乎正在工作......至少对于某些领域!


为什么会这样?

也许 test.com 的 DNS 服务器上没有配置某些东西?并且在 pascal-martin.fr 上配置了一些东西?

我对 DNS 系统的了解还不够 :-(


这里是一些命令的输出(来自 Linux):

$ dig pascal-martin.fr

; <<>> DiG 9.5.1-P2 <<>> pascal-martin.fr
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22164
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;pascal-martin.fr. IN A

;; ANSWER SECTION:
pascal-martin.fr. 86400 IN A 213.186.33.2

;; Query time: 29 msec
;; SERVER: 212.27.40.241#53(212.27.40.241)
;; WHEN: Fri Aug 7 00:00:47 2009
;; MSG SIZE rcvd: 50

和:

$ dig test.com

; <<>> DiG 9.5.1-P2 <<>> test.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62572
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;test.com. IN A

;; ANSWER SECTION:
test.com. 7200 IN A 204.12.0.50

;; Query time: 136 msec
;; SERVER: 212.27.40.241#53(212.27.40.241)
;; WHEN: Fri Aug 7 00:00:51 2009
;; MSG SIZE rcvd: 42

似乎几乎相同...所以这不是问题吗?

让我们试试另一个:

$ host pascal-martin.fr
pascal-martin.fr has address 213.186.33.2
pascal-martin.fr mail is handled by 100 mxb.ovh.net.
pascal-martin.fr mail is handled by 1 mx0.ovh.net.

和:

$ host test.com
test.com has address 204.12.0.50

嗯,这里有区别!问题可能是由 test.com 解析为 IP 但没有 MX 条目引起的吗?或者类似的东西?


可能是:当我使用 dns_get_record 测试 MX DNS 条目时,我没有得到 test.com 的结果:

array(0) {
}

但是我有两个 pascal-martin.fr :

array(2) {
[0]=>
array(6) {
["host"]=>
string(16) "pascal-martin.fr"
["type"]=>
string(2) "MX"
["pri"]=>
int(100)
["target"]=>
string(11) "mxb.ovh.net"
["class"]=>
string(2) "IN"
["ttl"]=>
int(14481)
}
[1]=>
array(6) {
["host"]=>
string(16) "pascal-martin.fr"
["type"]=>
string(2) "MX"
["pri"]=>
int(1)
["target"]=>
string(11) "mx0.ovh.net"
["class"]=>
string(2) "IN"
["ttl"]=>
int(14481)
}
}


好吧,我真的不知道“为什么”……但至少这里有一些提示……

我在 php 文档中找不到任何其他内容;所以,我不知道这是否是预期的行为:-(

无论如何:祝你好运!



编辑:好吧,在 Windows 下可能确实存在某种问题,因为当我尝试使用 Linux 时,我得到:

对于 test.com :

$ php temp.php
Type = A : bool(true)
Type = MX : bool(false)
Type = NS : bool(true)
Type = SOA : bool(true)
Type = PTR : bool(false)
Type = CNAME : bool(false)
Type = AAAA : bool(false)
Type = A6 : bool(false)
Type = SRV : bool(false)
Type = NAPTR : bool(false)
Type = TXT : bool(false)
Type = ANY : bool(true)

并且,对于 pascal-martin.fr :

$ php temp.php
Type = A : bool(true)
Type = MX : bool(true)
Type = NS : bool(true)
Type = SOA : bool(true)
Type = PTR : bool(false)
Type = CNAME : bool(false)
Type = AAAA : bool(false)
Type = A6 : bool(false)
Type = SRV : bool(false)
Type = NAPTR : bool(false)
Type = TXT : bool(false)
Type = ANY : bool(true)

所以,不是同一件事(总是真或总是假)我在 windows 上......

也许有类似的东西,在 Windows 上,该函数总是在寻找 MX 条目,而不考虑第二个参数?
(只是一个非常疯狂的猜测 ^^)

关于php - checkdnsrr 在 Windows 上总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1241572/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com