Start · Sprachen · PHP · Referenz · ldap_error

ldap_error

Funktion

Gibt die Fehlermeldung des zuletzt ausgeführten LDAP-Befehls als lesbaren String zurück.

seit PHP 4.0.0 Kategorie: misc

Signatur

ldap_error(LDAP\Connection $ldap): string

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

Typ
string
Beschreibung
Gibt die Fehlermeldung des letzten LDAP-Fehlers als String zurück. Bei Erfolg wird "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);
LDAP-Fehler [49]: Invalid credentials

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);
}
Gefundene Einträge: 1

// 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.