[PHP] LDAP Abfragen

M3Y3R

Well-known member
ID: 336361
L
8 Mai 2006
1.608
60
Hallo,

ich greife mit PHP über LDAP auf das ActiveDirectory zu und möchte gerne alle Einträge ausgeben lassen. Doch egal, was ich schreibe, ich erhalte keine Ausgaben.

PHP:
$name = "nag";
$ldap_server = "ldap://192.168.16.1";
$auth_user = "sv@sn.local";
$auth_pass = "sg";
$base_dn = "DC=sn,DC=local";
$filter = "(&(objectClass=user)(objectCategory=person)
(|(name=$name*)(displayname=$name*)(cn=$name*)))";


// connect to server
if (!($connect=@ldap_connect($ldap_server))) {
     die("Could not connect to ldap server");
}

// bind to server
if (!($bind=@ldap_bind($connect, $auth_user, $auth_pass))) {
     die("Unable to bind to server"); 
}


// search active directory
if (!($search=@ldap_search($connect, 'DC=*, DC=*', 'sn=*'))) {
     die("Unable to search ldap server");
}

$number_returned = ldap_count_entries($connect,$search);
echo "The number of entries returned is ". $number_returned."\n\n";


Es wird aber leider nichts ausgegeben. Wie kann ich nachschauen ob überhaupt Einträge vorhanden sind?


MFG
Papenburger
 
Dann kommt genau der gleiche Fehler!

Unable to search LDAP-Server.
Das müsste in meinen Augen heßen, dass diese Abfrage falsch ist:
PHP:
// search active directory
if (!($search=@ldap_search($connect, 'DC=*, DC=*', 'sn=*'))) {
     die("Unable to search ldap server");
}
 
So, seit heute kommt folgender Fehler:
PHP Warning: ldap_search(): Search: Invalid DN syntax in /usr/local/nagios/share/ldap/ldap-connect.php on line 31
[/php]

in Zeile 31 steht folgendes:
PHP:
24: ### // SEARCH TO SERVER \\ ###
25: function search_ldap_server($connect)
26: {
27: $base_dn="DC=sectornord, DC=local";
28: $filter="sn=*";
29: 
30:    $search=ldap_search($connect, $base_dn, $filter);
31:    if(!($search)){$search=$php_errormsg;}
32:    return($search);
33: }
 
Ich habe mal ein wenig getüftelt und mittleriweile kommt folgender Fehler:
ldap_search(): Search: Operations error in .../ldap/ldap-connect.php on line 30

In dieser Zeile steht folgendes:
PHP:
27: $base_dn="DC=sn, DC=local";
28: $filter="objectClass=*";
29:
30: $search=ldap_search($connect, $base_dn, $filter);

Über Google habe nach dem Errorcode gesucht und folgendes gefunden:
LDAP_OPERATIONS_ERROR: Indicates an internal error. The server is unable to respond with a more specific error and is also unable to properly respond to a request. It does not indicate that the client has sent an erroneous message.

In NDS 8.3x through NDS 7.xx, this was the default error for NDS errors that did not map to an LDAP error code. To conform to the new LDAP drafts, NDS 8.5 uses 80 (0x50) for such errors.

Dies habe ich übersetzt und da kam dann folgendes raus:
LDAP_OPERATIONS_ERROR: Zeigt einen inneren Fehler an. Der Server ist außer Stande, mit einem spezifischeren Fehler zu erwidern, und ist auch außer Stande, auf eine Bitte richtig zu antworten. Es zeigt nicht an, dass der Kunde eine falsche Nachricht gesandt hat. In NDS 8.3x durch NDS 7.xx war das der Verzug-Fehler für NDS Fehler, die zu einem LDAP Fehlercode nicht kartografisch darstellten. Sich den neuen LDAP Entwürfen, NDS 8.5 Gebrauch 80 (0x50) für solche Fehler anzupassen.

Daraus bin ich aber nicht schlau geworden und hab nach dem Fehlercode 0x50 der ebenfalls oben im Text angegeben wurde. Hierzu habe ich dann folgendes gefunden:
LDAP_OTHER: Indicates an unknown error condition. This is the default value for NDS error codes which do not map to other LDAP error codes.

Das ganze habe ich ebenfalls auf Deutsch übersetzen lassen und folgende Infos erhalten
LDAP_OTHER: Zeigt eine unbekannte Fehlerbedingung an. Das ist der Verzug-Wert für NDS Fehlercodes, die zu anderen LDAP Fehlercodes nicht kartografisch darstellen.

Wenn ich das ganze nun richtig verstanden habe, habe ich ein NDS Problem! Wie kann ich das ganze ändern und die Abfrage richtig schreiben. Über einen LDAP-Browser klappt die Abfrage doch auch, warum denn nicht mit PHP?

LG Papenburger