Tôi đoán tôi tìm thấy một cái gì đó (thử trên cửa sổ, PHP 5.3.0, từ CLI):
Khi tôi làm điều này:
$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));
}
tôi có được điều này:
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)
Vì vậy, không có thử nghiệm nào cho "true" :-(
Nhưng wh en Tôi thử với tên miền khác:
$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));
}
(thử nghiệm trên một này bởi vì tôi biết những gì trên nó, và muốn kiểm tra cho một ý tưởng cụ thể ^^)
tôi nhận được:
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)
Vì vậy, chức năng dường như đang hoạt động ... Đối với ít nhất một số miền!
Tại sao điều đó có thể?
Có thể có điều gì đó không được định cấu hình trên máy chủ DNS của test.com? Và cái gì đó được cấu hình trên pascal-martin.fr?
Tôi không biết các hệ thống DNS cũng đủ để nói :-(
Dưới đây là một vài kết quả đầu ra từ một số lệnh (từ 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
và:
$ 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
Dường như gần như giống nhau ... vậy không phải là vấn đề ở đây?
Hãy thử một cách khác:
$ 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.
Và:
$ host test.com
test.com has address 204.12.0.50
Vâng, ở đây, có một sự khác biệt! Có thể vấn đề được gây ra bởi thực tế là test.com phân giải thành một IP, nhưng không có mục MX? Hoặc thứ gì đó giống thế này ?
Có lẽ nó là: khi tôi sử dụng dns_get_record
để kiểm tra mục DNS MX, tôi không có kết quả cho test.com:
array(0) {
}
Nhưng tôi có hai cho 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)
}
}
Vâng, tôi thật sự không biết "tại sao" ... Nhưng ít nhất đây là một vài gợi ý ...
Tôi không thể tìm thấy bất kỳ điều gì khác trong tài liệu php; như vậy, tôi không biết nếu nó có ý định hành vi hay không :-(
Dù sao: may mắn
EDIT: tốt, có thể thực sự có một số loại vấn đề dưới cửa sổ, bởi vì khi tôi cố gắng với Linux, tôi nhận được:
Đối với 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)
Và, cho 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)
Vì vậy, không phải là điều tương tự (luôn luôn đúng hoặc luôn luôn sai) tôi trên cửa sổ ...
Có thể có một cái gì đó như thế nào, trên cửa sổ , hàm luôn tìm kiếm mục nhập MX, không tính đến tham số thứ hai?
(Chỉ là một dự đoán thực sự hoang dã ^^)
Tính năng này có hoạt động đối với mọi loại bản ghi DNS khác không? –
có điểm cộng tôi có nghĩa là mọi người đang nhận được cùng một vấn đề? – user121196
không, trên thực tế tôi đã thử bất kỳ: \t echo ("test.com dns kiểm tra:". Checkdnsrr ("test.com", "BẤT K" ")); trả về false – user121196