PHP ldap_connect + ldap_bind无法绑定

时间:2015-01-04 22:30:32

标签: php active-directory ldap

我有这个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扩展)

1 个答案:

答案 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协议的各个部分进行了很好的描述。