PHP Warning: ldap_bind(): Unable to bind to server

2019-04-22 21:54发布

问题:

I've following problem with my php script:

PHP Warning: ldap_bind(): Unable to bind to server: Can't contact LDAP server in ....

ldap_connect() says "Success" but ldap_bind() fails, how to fix that issue?

回答1:

Connect opens the session. Bind is what actually authenticates you. Thus you connected but did not login with valid credentials.



回答2:

Had this error on RHEL7 ( CentOS7 ) due to SELinux restricting ports HTTPD can use.

LDAP ports 389 and 636 are not on the default allow list, you can unblock with:

setsebool -P httpd_can_network_connect 1

You can test for the restriction by trying a socket to the LDAP server:

fsockopen('LDAP-Server-IP', 389);

It will give 'Permission Denied' showing it's blocked and not a credentials issue.

Also check your SELinux audit log file for other things being blocked.



回答3:

Sometime the problem will depend of your environment(Linux, Windows...) Try to bind with one of this options:

$connect = ldap_connect("ldap://".$ldap_server);
$auth_user = 'CN=XXX,OU=XXX,DC=XXX,DC=com';
$bind = ldap_bind($connect, $auth_user , $auth_pass);

or

$bind = ldap_bind($connect, 'YourDomaine\\'.$auth_user , $auth_pass);


回答4:

the ldap_bind() function asks for a three parameters:

  1. a resource id
  2. a rdn
  3. a password associated with the rdn the rdn and password are optional

if you bind using only the resource id :-

// $ldap=ladap_connect(*hostname*,*port*);  
// ldap_connect() returns a resource id
ldap_bind() returns a boolean value(true or false)  
ldap_bind($ladp); //annonymous bind    
$lb=ldap_bind($ldap,"uid=xxx,ou=something,o=hostname.com","password"); //used to authenticate  

this should work if not then you are using invalid credentials.



标签: php ldap