我有这个PHP代码:
$ldap = ldap_connect("aaa.bbbbb.cc")
or die("Could not connect to LDAP server.");
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
$ldapbind = ldap_bind($ldap);
if ($ldapbind) {
echo "LDAP bind successful...";
} else {
echo "LDAP bind failed..."; //end up here
}
我无法成功绑定,我尝试了各种组合。 使用带有" ldap://"。
的URI传递凭据以下C#代码在绑定到同一LDAP服务器时工作正常:
var connection = new LdapConnection("aaa.bbbbb.cc");
connection.Bind();
用于PHP的LDAP API似乎有点难以调试,因为如果绑定失败,您将无法获得任何结果,因此我不知道如何查看失败的内容,如果它无法访问服务器,错误的凭据或别的东西..
那么,任何可能导致PHP代码失败的想法?我需要做些什么特别的事吗? (为PHP启用了LDAP扩展)
答案 0 :(得分:1)
我之前遇到过PHP LDAP问题。
幸运的是,我在文档评论中发现了这一点:
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
在尝试打开连接和绑定时,会给出详细输出。
我通常这样做:
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
$ldap = ldap_connect("ldap://" . $domainController, $port);
$bind = @ldap_bind($ldap, $username . $accountSuffix, $password);
if (!$bind) {
// throw or something
echo ldap_error($ldap); // http://php.net/manual/en/function.ldap-error.php
}
Wikipedia对LDAP协议的各个部分进行了很好的描述。