正如标题中所述,ldap_connect()函数工作正常,但是当我尝试使用ldap_bind()时,匿名和凭证PHP将只给我
无法联系LDAP服务器
如何进一步调试此问题?
使用ldap浏览器时,我可以连接并绑定,没有任何问题,似乎没有其他错误消息。
我尝试使用协议版本3进行绑定。
答案 0 :(得分:1)
ldap_connect
确实不实际连接到LDAP服务器,但只检查您提供的参数是否有意义#34;。所以当你提供f.e.它会失败300.300.300.300作为IP地址。但那就是它。尝试无连接,即使该函数被称为ldap_connect
。这有历史原因。
首次尝试连接通常是在ldap_bind
上完成的,这就是连接问题通常出现在这里的原因。
请注意,您应该使用LDAP-URI作为ldap_connect
的参数。第二个参数($port
)已弃用,仅在您将IP地址或FQDN作为第一个参数传递时使用(您不应该这样做,因为您无法指定f.e.LDAPS)。所以你应该有类似ldap_connect('ldaps://ldap.example.org:639');
的东西。
我通常首先通过fsockopen
检查我是否可以像这样到达给定端口上的服务器:```
$res = fsockopen('ldap.example.org', 639, null, null, 5);
if (false === $res) {
throw new Exception('server could not be reached within 5 seconds');
}
fclose($res);
如果没有抛出异常,服务器就可用,并且凭据更有可能是错误的。
除此之外,您始终可以使用ldap_error
和ldap_errno
来(通常)获取有关上一个错误的更详细信息。