LDAP:某些用户的PHP代码身份验证问题

Hello friends I'm using this function in my php application it was working perfectly in windows server, the customer asked to change the server into linux server the strange thing it authenticate some user correctly and don't with other although the connection and the searching is ok but the binding in the second time doesn't work with some users

    function authLDAP($username, $pass, $dn) {

        $ldap['server'] = 'x.local'; 
        if (empty($dn)) {
            $ldap['user'] = 'organization\\user';
            $ldap['pass'] = 'xxxxxxx';
        } else {
            $ldap['user'] = $dn;
            $ldap['pass'] = $pass;
        }

        $ldap['base_dn'] = "OU=QU, DC=Qassimu, DC=local";

        $ds = ldap_connect($ldap['server']);
        ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
        $bind = ldap_bind($ds, $ldap['user'], $ldap['pass']);

        $filter = "(SamAccountname=$username)";

        $sr = ldap_search($ds, $ldap['base_dn'], $filter, array('*'));

        $rows = ldap_get_entries($ds, $sr);
        if (empty($dn) and !empty($rows[0]['dn'])) {
 // check user authintcation ..
            return $this->authLDAP($username, $pass, $rows[0]['dn']);
        } elseif ($rows[0]['samaccountname'][0] == $username) { 
// // first LDAP binding    
            return true;
        } else {
            return false;
        }
    }