[英]PHP5: dns_get_record() only returning A records for subdomains
在Linux上运行PHP 5.2,我使用dns_get_record()
运行了一系列查询。 从文档中可以看出,该函数复制了dig
但我发现不一致。 我的目标是获取对每个主机名所属的域具有权威性的主要和辅助名称服务器。
dns_get_record('example.com', DNS_NS);
返回良好的结果。 dns_get_record('www.example.com', DNS_NS);
什么也不返回。 dns_get_record('www.example.com', DNS_ANY);
仅返回A记录。 dns_get_record('www.example.com', DNS_SOA);
什么也不返回。
但是,从命令行使用dig可以总是至少获得SOA:
dig www.example.com NS
或dig www.example.com SOA
返回包含名称服务器的有效AUTHORITY SECTION(在SOA中)。
如何在PHP中复制它? 我尝试了PEAR Net_DNS模块,并看到了与dns_get_record()
类似的dns_get_record()
。
从命令行进行dig
,您更直接(相对)连接到DNS。 输出也针对该场景进行了格式化。 执行php函数时,它返回其作者认为需要的值。 不一定直接对应于dig
。
如果要获取dig
结果,则可以使用exec('dig www.example.com ns');
并根据需要解析返回的输出。
另外,如果您要查询DNS的子域,即www。 而不是tld (example.com),那么您将不会获得与其相关的其他记录-您只会获得与该子域相关的结果,在您的情况下,该结果只是一个A记录。
我遇到了类似的问题,对于节点(或子域),您需要更加具体,并且知道您所请求的DNS条目的文本。
例如,DMARC DNS条目是SPT和DKIM的TXT条目。
$showResult = dns_get_record('_dmarc.domain.com', DNS_TXT); //returns an array
工作正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.