问题
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:
- a resource id
- a rdn
- 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.
来源:https://stackoverflow.com/questions/5309372/php-warning-ldap-bind-unable-to-bind-to-server-cant-contact-ldap-server