2009-08-06 9 views
5

पर झूठी रिटर्न देता है मैं PHP पर 5.312 के साथ checkdnsrr का उपयोग कर रहा हूं और यह हमेशा झूठा लौटाता है।checkdnsrr हमेशा विंडोज़

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 
+0

यह किसी भी अन्य DNS रिकॉर्ड प्रकारों के लिए काम करता है? –

+0

क्या प्लस मुझे लगता है कि लोगों को एक ही समस्या मिल रही है? – user121196

+0

नहीं, वास्तव में मैंने किसी भी कोशिश की: \t गूंज ("test.com डीएनएस चेक:"। Checkdnsrr ("test.com", "कोई भी")); झूठी – user121196

उत्तर

3

मुझे लगता है कि मैं कुछ (खिड़कियों पर करने की कोशिश की, पीएचपी 5.3.0, CLI से) पाया:

जब मैं यह कर:

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("test.com", $type)); 
} 

मैं इस मिल इसलिए, कोई भी परीक्षण "सत्य" नहीं देता है :-(


लेकिन wh एन मैं अन्य डोमेन के साथ प्रयास करें:

$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 सर्वर पर कुछ कॉन्फ़िगर नहीं किया गया है? और यह कुछ पास्कल- martin.fr पर कॉन्फ़िगर किया गया है?

मैं डीएनएस सिस्टम अच्छी तरह से :-(


यहाँ (लिनक्स से) कुछ आदेश से आउटपुट के एक जोड़े को बताने के लिए पर्याप्त जानकारी नहीं है:

$ 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 आईपी को हल करता है, लेकिन इसमें कोई एमएक्स प्रविष्टि नहीं है? या इस तरह का कुछ ?


शायद यह है: जब मैं dns_get_record का उपयोग एमएक्स 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 दस्तावेज़ीकरण में कुछ और नहीं मिल रहा है; हां, तो मैं नहीं जानता कि अगर यह व्यवहार इरादा या :-(नहीं

वैसे भी है: सौभाग्य



संपादित करें: ठीक है, वहाँ वास्तव में के तहत समस्या किसी तरह का हो सकता है खिड़कियां, क्योंकि जब मैं लिनक्स के साथ की कोशिश, मैं मिलता है:

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) 

तो, न ही बात (हमेशा सच या हमेशा गलत) मैं खिड़कियों पर मिल गया ...

हो सकता है कि वहाँ कुछ की तरह, खिड़कियों पर , फ़ंक्शन हमेशा एमएक्स एंट्री की तलाश में है, दूसरे पैरामीटर को ध्यान में रखते हुए?
(बस एक बहुत जंगली अनुमान ^^)

+0

जो कारण हो सकता है (अगर यह मूर्खतापूर्ण होगा)। मुझे लगता है कि मुझे पता लगाने के लिए विंडोज़ पर dns_get_record के कोड में खोदना होगा ... हालांकि महान जवाब! धन्यवाद! – user121196

+0

आपका स्वागत है! खोदने वाली चीज़ के साथ शुभकामनाएँ! –

0

यह कार्यक्षमता जानकारी के लिए php.net's manual page for checkdnsrr में बदलाव का देखें से पहले 5.3.0

खिड़कियों पर PHP के संस्करणों पर उपलब्ध नहीं है। प्रतिस्थापन के लिए टिप्पणियों की भी जांच करें।

+1

लेकिन वह PHP 5.3 –

+1

हम्म का उपयोग कर रहा है ... तो वह है ... एक बग फाइल करें? – Mez