我在名称解析方面遇到了奇怪的问题。我正在尝试连接到活动目录服务器。我可以从 SRV 记录器成功获取 ldap 服务器地址。然后我尝试将 dns 名称解析为 IP 地址,但失败了:
<?php
echo 'example.com.:' . PHP_EOL;
echo gethostbyname('example.com.');
echo PHP_EOL;
echo 'dc1.veracomp.local.:' . PHP_EOL;
echo gethostbyname('dc1.my-company.local.');
echo PHP_EOL;
echo 'nslookup dc1.my-company.local.:' . PHP_EOL;
echo `nslookup dc1.my-company.local.`;
example.com 被正确解析,然后在gethostbyname('dc1.my-company.local.')
几秒钟后返回失败dc1.my-company.local.
而不是 IP 地址。仍然相同的 PHP 脚本可以调用正确解析域名的 nslookup ...:
example.com.:
93.184.216.119
dc1.my-company.local.:
dc1.my-company.local.
nslookup dc1.my-company.local.:
Server: xxx.xxx.254.117
Address: xxx.xxx.254.117#53
Name: dc1.my-company.local
Address: 192.168.12.21
这里有什么问题?
编辑:我要求进行名称解析,因为我遇到的真正问题是我可以连接到ldap://192.168.12.21
或ldap://dc1.my-company.pl
,但我无法连接到ldap://dc1.my-company.local
.
不幸的是,_ldap._tcp.my-company.pl 的 SRV 记录只返回本地地址。我不想硬编码 .pl 地址。host
而且我不明白为什么我必须在将本地地址作为选项传递给 Zend_Ldap 之前手动解析它们。