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?
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.
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);
the ldap_bind() function asks for a three parameters:
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.