2009-08-06 16 views
5

Używam checkdnsrr w systemie Windows z PHP 5.3 i zawsze zwraca wartość false.checkdnsrr zawsze zwraca wartość false w systemie Windows

dns_get_record, jednak działa.

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

Czy to działa dla innych typów rekordów DNS? –

+0

Czy dostaję plusów, że ludzie mają ten sam problem? – user121196

+0

nie, w rzeczywistości próbowałem żadnych: \t echo ("test.com dns check:". Checkdnsrr ("test.com", "any")); zwraca false – user121196

Odpowiedz

3

Chyba znalazłem coś (wypróbowane na oknach, PHP 5.3.0, z CLI):

Kiedy to zrobić:

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

uzyskać to:

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) 

Żaden z testów nie daje "prawdziwego" :-(


pl I spróbować z innej domeny:

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

(testowane na tym, bo wiem, co na niej jest, i chciał przetestować dla konkretnego pomysłu ^^)

uzyskać:

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) 

Tak więc, funkcja wydaje się działać ... Przynajmniej niektóre domeny!


Dlaczego to możliwe?

Być może jest coś, czego nie skonfigurowano na serwerze DNS test.com? I to coś jest skonfigurowane na pascal-martin.fr?

nie wiem systemów DNS na tyle dobrze, aby powiedzieć :-(


tu kilka wyjść z niektórych poleceń (z Linuksem):

$ 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 

oraz:

$ 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 

Wydaje się być prawie taki sam ... więc nie ma problemu?

Spróbujmy jeszcze jeden:

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

oraz:

$ host test.com 
test.com has address 204.12.0.50 

Cóż, tu jest różnica! Czy problem może wynikać z faktu, że test.com rozwiązuje problem z adresem IP, ale nie ma wpisu MX? Lub coś w tym stylu ?


Może to jest: kiedy używać dns_get_record do testowania MX wpisów DNS, nie mam wynik dla test.com:

array(0) { 
} 

Ale mam dwa do 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) 
    } 
} 


Cóż, ja naprawdę nie wiem „dlaczego” ... Ale przynajmniej oto kilka wskazówek ...

Nie mogę znaleźć niczego więcej w dokumentacji PHP; tak, nie wiem, czy to zamierzone zachowanie lub nie :-(

W każdym razie: powodzenia



EDIT: dobrze, że może być naprawdę jakiś problem pod okna, bo gdy próbuję z systemem Linux, otrzymuję:

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

A dla 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) 

tak, to nie to samo (zawsze prawdziwe lub fałszywe zawsze) mam na oknach ...

Może istnieje coś takiego, na oknach , funkcja zawsze szuka wpisu MX, nie biorąc pod uwagę drugiego parametru?
(Tylko naprawdę dzikie domysły ^^)

+0

, które mogą być przyczyną (byłoby głupio, jeśli tak). Chyba będę musiał zagłębić się w kod dns_get_record w oknach, aby dowiedzieć się ... świetna odpowiedź! dzięki! – user121196

+0

Nie ma za co! Życzymy powodzenia w kopaniu! –

0

Ta funkcja nie jest dostępna w wersjach PHP w systemie Windows przed 5.3.0

Zobacz changelog w php.net's manual page for checkdnsrr celach informacyjnych. Sprawdź także komentarze do wymiany.

+1

Ale on używa PHP 5.3 –

+1

Hmm ... więc on ... zgłasza błąd? – Mez

Powiązane problemy