Warning: ldap_bind(): Unable to bind to server: Invalid credentials PHP and LDAP-ThrowExceptions

Exception or error:

I’m trying to connect to an LDAP server to authenticate user credentials.

I’ve found a few users with this same issue but their solutions did not work for me.

here’s what I’m using:

define('LDAP_SERVER', 'LDAP://pdc.mydomain.com');
define('LDAP_PORT', 389);
define('LDAP_TOP', 'dc=mydomain,dc=com');
    if(!($ds = ldap_connect(LDAP_SERVER, LDAP_PORT)))
        die ("Could not connect to mydomain domain");
    $un = $_POST['username'].",".LDAP_TOP;
    //echo stripslashes($un)."<br>";
    $ldapbind = ldap_bind($ds, stripslashes($un), $_POST['password']);
        echo "login success";
        echo "login failed";

I’ve tried using “mydomain\myusername” and just “myusername”.

I added the stripslashes() function when neither worked to test that, and still no dice.

the error I get every time is: Warning: ldap_bind(): Unable to bind to server: Invalid credentials

any help would be greatly appreciated


How to solve:

I know it is a pretty old question and if you still need an answer then what happens if you run this code in a single php file?

$username = 'hello';
$password = '123123';
$server = '';
$domain = '@yourdomain.local';
$port = 389;

$connection = ldap_connect($server, $port);
if (!$connection) {
    exit('Connection failed');

// Help talking to AD
ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, 0);

$bind = @ldap_bind($connection, $username.$domain, $password);
if (!$bind) {
    exit('Binding failed');

// This is where you can do your work
echo 'Hello from LDAP';


More info is here.


Check whether your login and pass correct.
And before the login add domain. See in example bottom (HQ\login):

$login = 'HQ\student';
$password = 'MYPASS';

$ldap_link = ldap_connect('pdc.bc) or die("Could not connect to LDAP server.");

$ldapbind = @ldap_bind($ldap_link, $login, $password) or die ("Error trying to bind: ".ldap_error($ldap_link));


I used these functions:

function authenticate($username, $password){
    include 'conf/config.inc.php';

    $ldap_Userdn = getUserDN($username);

        $ldap_con = ldap_connect($ldap_hostname,$ldap_port);
        ldap_set_option($ldap_con, LDAP_OPT_PROTOCOL_VERSION, 3);

        if(ldap_bind($ldap_con, $ldap_Userdn, $password)){
            return true; 
        } else  {
            //echo "<br>Error bind checkPassword function<br>";
            return false;
    } else {
        echo "Error to find user DN" . ldap_error($ldap_con);


function getUserDN($username){
    include 'conf/config.inc.php';

    $data = "";

    $ldap_con = ldap_connect($ldap_hostname,$ldap_port);
    ldap_set_option($ldap_con, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($ldap_con, LDAP_OPT_REFERRALS, 0);

    if(ldap_bind($ldap_con, $ldap_dn, $ldap_password)){
        $dn=$ldap_search; //even if it seems obvious I note here that the dn is just an example, you'll have to provide an OU and DC of your own

        $res = ldap_search($ldap_con, $ldap_search, $filter);
        $first = ldap_first_entry($ldap_con, $res);
        $data = ldap_get_dn($ldap_con, $first);

    } else {
        echo "<br>Error bind getUserDN function<br>" . ldap_error($ldap_con);

    return $data;

an this is my config.inc.php:

$ldap_hostname = "my openldap IP";
$ldap_port = "389";
$ldap_dn = "cn=Manager,dc=mydomain,dc=com";
$ldap_search = "dc=mydomain,dc=com";
$ldap_password ="my password";

Leave a Reply

Your email address will not be published. Required fields are marked *