我試圖使用PHP獲取CNAME記錄的列表。使用NetDNS獲取Cname記錄或get_dns_record
此方法用於在我的舊Windows 7計算機上託管代碼時工作,但我將其移至Ubuntu計算機(類似AMP堆棧設置),並且不再返回$url
的CNAME記錄。我將代碼上傳到Windows服務器,但還沒有CNAME記錄。
$records['cname'] = dns_get_record($url, DNS_CNAME);
我不能說我自稱OS有很大的任何事情,也許我有一些設置,允許這個工作,我的老機器上的某種方式。它目前返回一個簡單的空數組,它用於返回與我的DNS管理服務中的內容相匹配的CNAME記錄列表。我在這裏閱讀文章:
Why wouldn't dns_get_record show CNAMEs when I KNOW they exist?
,最終試圖實現與梨的NetDns2圖書館的功能,用下面的代碼。而且,響應的answer
數組仍爲空。不確定從get_dns_record到NetDNS2的問題是否一樣,或者在兩種情況下我都做錯了,但測試的站點肯定有CNAME記錄,包括google.com
和yahoo.com
。
//using Google Name Server
$rslvr = new Net_DNS2_Resolver(array('nameservers' => array('8.8.8.8')));
$records['cname'] = $rslvr->query($url, 'CNAME');
任何幫助表示讚賞,最終目標是能夠獲得的CNAME記錄列表,好像我是我的老機器上。
你的兩個結果都顯示出我期待的結果。 'dns_get_record('domain.com',DNS_CNAME);'應該返回該域的CNAME記錄列表,包括a.domain.com,b.domain.com和www.domain.com。基本上所有你能夠用'dns_get_record'和'dig'完成的事情就是確認你輸入的URL是一個CNAME記錄,並且需要指向一個A記錄。以前,當傳遞DNS_CNAME作爲參數時,'dns_get_record'像我期望的那樣工作 - 它仍然像這樣用DNS_MX和DNS_NS工作。 –
沒有辦法獲得給定服務器的所有子域的列表。 'NS'列出給定域的名稱服務器,'MX'列出給定域的郵件服務器。 'A'爲您提供域名的IP,'CNAME'爲您提供CNAME「父母」,如果域名有一個。我想你誤解了DNS允許什麼,什麼不允許。 – cweiske
想象一下,如果你問「.com」他們的CNAME或他們的身份,會發生什麼 - 他們會給你所有.com的子域名。 – cweiske