在Linux上运行PHP5.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
返回包含名称服务器的有效授权部分(在SOA中)。
我如何在PHP中复制它?我尝试过PEAR Net_DNS模块,看到了与dns_get_record()类似的恶作剧。
发布于 2012-09-27 06:29:16
当您从命令行使用dig时,您将更直接(相对地)连接到DNS。输出也针对该场景进行了格式化。当执行php函数时,它返回作者认为需要的值。不一定直接对应于dig。
如果您希望获得dig结果,那么可以使用exec('dig www.example.com ns');并根据需要解析返回输出。
另外,如果你在DNS中查询一个子域,比如www。而不是tld (example.com),那么您将不会获得与其相关联的其他记录-您将只获得与该子域名相关联的结果,在您的示例中,这只是一条A记录。
发布于 2019-08-16 23:14:19
我有一个类似的问题,对于节点(或子域),您需要更具体,并知道您正在请求的DNS条目的文本。
例如,DMARC DNS条目是TXT条目,SPF和DKIM也是如此。
$showResult = dns_get_record('_dmarc.domain.com', DNS_TXT); //returns an array工作正常。
https://stackoverflow.com/questions/1294565
复制相似问题