ldap_bind 的注意事项


ldap_bind(): Unable to bind to server: Can't contact LDAP server

ldap_bind(): Unable to bind to server: Can't contact LDAP server

方法一:

    这是最基本的方法,先确认PHP脚本实际上可以链接LDAP服务器。

    以下是需要注意的一些事情:

        是否有防火墙阻止您访问AD / LDAP服务器?

        LDAP服务器是否正在运行?

        它是否在Active Directory服务器上启用?

        您在ldap_bind中使用的密码是否正确?

        您是否在为用户使用RDN而不仅仅是用户名?

        例如,在Windows上,这看起来像:"uid=USERNAME,cn=users,dc=HOSTNAME,dc=DOMAIN,dc=com"

    这是最基本的方法,但我经常会遇到类似的事情,所以我想我一定要想到。


方法二:

    此解决方案仅适用于连接到安全LDAP服务器的情况。

    很多人遇到这个问题。以下有关Novell网站的文章概述了Windows或Linux使安全LDAP连接正常工作的基本步骤,并显示了使用ldap_bind的示例。

    http://www.novell.com/coolsolutions/tip/5838.html


方法三:

    当你启用php_ldap时。windows用户必须在(C:\OpenLDAP\sysconf)目录,linux用户必须在(/etc/openldap)目录,创建一个(ldap.conf)文件因为这是在DLL内部进行了硬编码。在文件中写入以下内容即可:

TLS_REQCERT never

https://lists.horde.org/archives/sork/Week-of-Mon-20040503/001578.html


例1:

$username = 'test';
$passwd = 'UlkIAWH23';
$con = @ldap_connect('ldaps://the.ldap.server', 636);
var_dump(@ldap_bind($con, $username, $passwd));


例2:

$ldaphost = "ldap.what.at.greatnet.com";
$ldapport = 389;

$ds = ldap_connect($ldaphost, $ldapport)
or die("Could not connect to $ldaphost");

if ($ds) 
{
    $username = "test";
    $upasswd = "UlkIAWH23";

    $ldapbind = ldap_bind($ds, $username, $upasswd);
                               
    if ($ldapbind) 
        {print "Congratulations! $username is authenticated.";}
    else 
        {print "Nice try, kid. Better luck next time!";}
}


上一篇 下一篇

评论

登录后可发表评论