Signatur
Beschreibung
ldap_error() liefert die menschenlesbare Fehlermeldung, die dem letzten LDAP-Fehlercode der angegebenen Verbindung entspricht. Sie ist das textuelle Gegenstück zu ldap_errno(), das den numerischen Fehlercode zurückgibt.
Die Funktion ist besonders nützlich zur Fehlerdiagnose nach gescheiterten LDAP-Operationen wie ldap_bind(), ldap_search() oder ldap_add(). Anstatt den numerischen Fehlercode manuell nachzuschlagen, erhält man sofort eine aussagekräftige Beschreibung des Problems.
Die zurückgegebene Zeichenkette ist standardmäßig auf Englisch und entspricht den offiziellen LDAP-Fehlertexten gemäß RFC 4511. Typische Rückgaben sind z. B. "Success", "No such object" oder "Invalid credentials".
Bei erfolgreich abgeschlossenen Operationen gibt die Funktion "Success" zurück (Fehlercode 0). Die Funktion sollte stets in Kombination mit ldap_errno() verwendet werden, um sowohl Code als auch Text für Logs oder Fehlermeldungen bereitzustellen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ldap Pflicht | LDAP\Connection | Eine gültige LDAP-Verbindungsressource, die von ldap_connect() zurückgegeben wurde. Ab PHP 8.1 ist dies ein LDAP\Connection-Objekt. |
Rückgabewert
"Success" zurückgegeben. Die Funktion gibt immer einen String zurück — auch bei unbekannten Fehlercodes (dann typischerweise einen generischen Text).Beispiele
Fehlerbehandlung nach fehlgeschlagenem Bind
<?php
$ldap = ldap_connect('ldap://ldap.example.com');
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
$result = @ldap_bind($ldap, 'cn=admin,dc=example,dc=com', 'wrongpassword');
if (!$result) {
$errno = ldap_errno($ldap);
$error = ldap_error($ldap);
echo "LDAP-Fehler [{$errno}]: {$error}" . PHP_EOL;
}
ldap_unbind($ldap);
Kombination mit ldap_errno für strukturiertes Logging
<?php
function checkLdapResult(LDAP\Connection $ldap, bool $result, string $operation): void {
if (!$result) {
$code = ldap_errno($ldap);
$message = ldap_error($ldap);
error_log("[LDAP] Operation '{$operation}' fehlgeschlagen. Code: {$code}, Meldung: {$message}");
throw new RuntimeException("LDAP-Operation '{$operation}' fehlgeschlagen: {$message} (Code {$code})");
}
}
$ldap = ldap_connect('ldap://ldap.example.com');
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
try {
$bound = @ldap_bind($ldap, 'cn=admin,dc=example,dc=com', 'geheimesPasswort');
checkLdapResult($ldap, $bound, 'ldap_bind');
$search = ldap_search($ldap, 'dc=example,dc=com', '(uid=max.mustermann)');
checkLdapResult($ldap, (bool)$search, 'ldap_search');
$entries = ldap_get_entries($ldap, $search);
echo "Gefundene Einträge: " . $entries['count'] . PHP_EOL;
} catch (RuntimeException $e) {
echo "Fehler: " . $e->getMessage() . PHP_EOL;
} finally {
ldap_unbind($ldap);
}
// Wichtig · Fallstricke
Sicherheitshinweis: Detaillierte LDAP-Fehlermeldungen sollten niemals direkt an Endbenutzer ausgegeben werden, da sie Informationen über die Verzeichnisstruktur oder Benutzernamen preisgeben können. Verwende allgemeine Fehlermeldungen für die Benutzeroberfläche und protokolliere Details nur intern.
PHP-Versionen: Ab PHP 8.1 erwartet die Funktion ein LDAP\Connection-Objekt statt einer veralteten resource. Bei Übergabe einer resource wird eine Deprecation-Warnung ausgelöst.
Hinweis: ldap_error() gibt den Fehler der Verbindung zurück, nicht den eines bestimmten LDAP-Ergebnis-Handles. Nach mehreren parallelen Operationen auf derselben Verbindung bezieht sich der Fehlercode stets auf die zuletzt abgeschlossene Operation.