获取错误"无法联系LDAP服务器使用PHP的ldap_bind函数


Getting Error " Can't contact LDAP server" using PHP ldap_bind function

我必须将Active Directory用户与服务器绑定。我可以成功连接到服务器,但不知何故不能绑定用户。我不知道是什么原因。

以下是我的PHP源代码:
$basedn="dc=domain,dc=com";
echo "Connecting ...<br/>";
$ds=ldap_connect("192.XXX.XXX.XX");  // must be a valid LDAP server!
echo "connect result is ".$ds."<br/>";
if($ds){
    ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
    $lb=ldap_bind($ds,"cn=xyz,o=domain.com","password");
    if ($lb) {
        echo "LDAP bind successful...";
    } else {
        echo "LDAP-Errno: " . ldap_errno($ds) . "<br />";
        echo "LDAP-Error: " . ldap_error($ds) . "<br />";
    }       
    ldap_close($ds);
}

你能告诉我在ldap_bind函数中传递username参数的具体内容吗?请提供我任何源代码,帮助我这样做吗?

我在一个运行Server 2008 R2的域控制器上,该域最初是2003年的,必须使用login@domain格式。我验证了DN是正确的,2008年以前的域管理帐户可以使用DN连接。但是,非管理员不能,除非使用login@domain格式。

现在,我的代码尝试:

美元磅= ldap_bind (ds,美元"cn =登录,o = domain.com","密码");

如果没有找到,则尝试:

美元磅= ldap_bind (ds,美元"login@domain.com","密码");

这是我对DN不工作的原因进行故障排除时的快速修复。我建议即使您使用的是2008年的格式,也要尝试2003年的格式。

在Windows Server 2003上使用Active Directory,而不是:

$lb = ldap_bind($ds, "cn=login,o=domain.com", "password");

我不得不使用:

$lb = ldap_bind($ds, "login@domain.com", "password");

然而,你的错误信息(不能联系LDAP服务器)看起来像你没有提供给ldap_connect()一个服务器地址可达通过你的PHP脚本(检查Windows防火墙等)