checkdnsrr hep pencerelerde döndürür false

2 Cevap php

2 Cevap

Ben (CLI gelen pencere üzerinde çalıştı, PHP 5.3.0,) bir şey buldum sanırım:

Bunu yaptığınızda:

$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));
}

Ben bu olsun:

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)

Yani, testlerin hiçbiri "gerçek" :-( verir


But when I try with another domain :

$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));
}

(tested on this one because I know what's on it, and wanted to test for a specific idea ^^ )

Alıyorum:

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)

Yani, fonksiyon en azından bazı alanlar için ... çalışıyor gibi görünüyor!


Why could that be ?

Belki test.com DNS sunucusunda yapılandırılmış olmayan bir şey var? Ve bu şey pascal-martin.fr yapılandırılır?

Ben :-( anlatmak için yeterince iyi DNS sistemlerini bilmiyorum


İşte (Linux) bazı komutlar elde edilen çıktıların bir çift:

$ 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

ve:

$ 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

... Hemen hemen aynı görünüyor bu yüzden bir sorun burda?

Başka bir tane deneyelim:

$ 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.

Ve:

$ host test.com
test.com has address 204.12.0.50

Eh, burada bir fark var! Sorun test.com bir IP giderir, ama hiçbir MX girdisi olduğu gerçeği neden olabilir? Ya da bunun gibi bir şey mi?


Maybe it is : when I use dns_get_record to test for MX DNS entries, I have no result for test.com :

array(0) {
}

Ama ben pascal-martin.fr için iki tane var:

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)
  }
}


Well, I don't really know "why"... But at least here are a few pointers...

Ben php belgelerinde başka bir şey bulamıyorum; bu yüzden, ben :-( amaçlandığı eğer davranışını bilmek ya da yok

Neyse: iyi şanslar!



EDIT : well, there might really be some kind of problem under windows, because when I try with Linux, Alıyorum:

Test.com için:

$ 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)

Ve, pascal-martin.fr için:

$ 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)

Yani, aynı şey (always true or always false) Ben windows yok ...

Maybe there something like, on windows, the function is always looking for MX entry, not taking into account the second parameter ?
(Just a really wild guess ^^)

Bu işlevsellik 5.3.0 önce pencerelerin üzerinde PHP sürümlerinde mevcut değildir

Bilgi için php.net's manual page for checkdnsrr de changelog bakın. Ayrıca değiştirmeleri için yorum kontrol.