Our organization is migrating away from Novell E-directory to MS Active 
Directory.  I have a php class that allows me to run various queries on our 
e-directory ldap server which I am working to convert to AD.  However, I'm 
running into an error that i cannot figure out.  I have updated the base_dn to 
point tothe correct location (verified by a third party ldap browser).  Also 
added a username and password since our AD environment doesn't allow anonymous 
queries.  The error I get is 

Warning: ldap_search() [function.ldap-search]: Search: Operations error in 
/var/www/html/intranet/_php/class.ldap_test.php on line 149

On that line I have this line of code
$result = ldap_search($this->conn,$this->base_dn,$filter);

Where $this->conn evaluates to Resource id #3, $this->base_dn is the correct dn 
(ou=something,dc=domain,dc=domain_part_2) and $filter is cn=myusername

Can anyone shed some light on this?  Below is the entire method from the class.

        function connectldap($filter,$override=false) {
                //connect to the server
                $this->conn = ldap_connect($this->server);
                
                //if the connection failed, set the error message
                //and return false
                if(!$this->conn) {
                        $this->errMsg[] = "Unable to connect to server\n";
                        return false;
                }
                //ldap_set_option($this->conn, LDAP_OPT_PROTOCOL_VERSION, 3);
                //bind the connection.  This function will perform an
                //anonymous query to get the full 
                $bind = @ldap_bind($this->conn,$this->ldap_user,$ldap_passwd);
                if(!$bind) {
                        $this->errMsg[] =  "Unable to bind to server\n";
                        return false;
                }
                echo "<p>$filter - " . $this->conn . " - " . $bind . " - " . 
$this->base_dn . "</p>\n";
                //run the ldap query
                $result = ldap_search($this->conn,$this->base_dn,$filter);
                //if the search failed, then return false and set the error 
message
                if(!$result) {
                        $this->errMsg[] =  "Search failed - " . 
ldap_error($this->conn) . "\n";
                        return false;
                }
                //get the entries and store them in a variable
                $info=ldap_get_entries($this->conn,$result);
                
                //if the number of entries reutnred is zero, then the user
                //could not be found in the ldap server
                if($info["count"] == 0) {
                        $this->errMsg[] =  "User Unknown\n";
                        return false;
                }
                //otherwise, if the number of entries found is greater than 1, 
then
                //more than one object was found.
                elseif($info["count"]>1 && !$override) {
                        $this->errMsg[] =  "There was more than one user 
found\n";
                        return false;
                }
                else {
                        return $info;
                }
        }

Thank you,
Robbert van Andel

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to