2

在 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

返回包含名称服务器的有效权限部分(在 SOA 中)。

如何在 PHP 中复制它?我已经尝试过 PEAR Net_DNS 模块并看到了与dns_get_record().

4

2 回答 2

1

当您dig使用命令行时,您会更直接(相对)连接到 DNS。输出也针对该场景进行了格式化。执行 php 函数时,它会返回作者认为需要的值。不一定直接对应dig

如果您想获得dig结果,那么您可以根据需要使用exec('dig www.example.com ns');和解析该返回输出。

此外,如果您在 DNS 中查询子域,即 www。而不是tld (example.com),那么您将不会获得与其关联的其他记录 - 您只会获得与该子域关联的结果,在您的情况下它只是一条 A 记录。

于 2012-09-26T22:29:15.747 回答
0

我遇到了类似的问题,对于节点(或子域),您需要更具体并知道您请求的 DNS 条目的文本。

例如,DMARC DNS 条目是 TXT 条目,SPF 和 DKIM 也是如此。

$showResult = dns_get_record('_dmarc.domain.com', DNS_TXT); //returns an array

工作正常。

于 2019-08-16T15:14:18.953 回答