Signatur
Beschreibung
ldap_errno() liefert den internen Fehlercode, den der LDAP-Server oder die Client-Bibliothek für die zuletzt ausgeführte Operation auf der übergebenen Verbindungsressource gesetzt hat. Der Wert 0 bedeutet, dass kein Fehler aufgetreten ist (entspricht LDAP_SUCCESS).
Die Funktion ist besonders nützlich, wenn LDAP-Operationen wie ldap_search(), ldap_bind() oder ldap_add() fehlschlagen und man den genauen Fehlergrund ermitteln möchte. In Kombination mit ldap_error(), das eine menschenlesbare Fehlerbeschreibung zurückgibt, lässt sich eine aussagekräftige Fehlerbehandlung implementieren.
Die zurückgegebenen Fehlercodes entsprechen den standardisierten LDAP-Fehlercodes gemäß RFC 4511, z. B. 49 für Invalid Credentials oder 32 für No Such Object. Eine vollständige Liste der Codes ist in den LDAP-Spezifikationen oder der OpenLDAP-Dokumentation zu finden.
Beachte, dass der Fehlercode immer auf die letzte ausgeführte Operation bezogen ist. Er sollte daher unmittelbar nach der fehlgeschlagenen Funktion abgefragt werden, bevor eine weitere LDAP-Operation den Wert überschreibt.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ldap Pflicht | LDAP\Connection | Eine gültige LDAP-Verbindungsinstanz, wie sie von ldap_connect() zurückgegeben wird. |
Rückgabewert
0 bedeutet Erfolg (LDAP_SUCCESS). Alle anderen Werte repräsentieren spezifische Fehlerzustände gemäß LDAP-Spezifikation.Beispiele
Fehlercode nach fehlgeschlagenem Bind abfragen
<?php
$ldap = ldap_connect('ldap://localhost');
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
$bindResult = @ldap_bind($ldap, 'cn=falscherBenutzer,dc=example,dc=com', 'falschesPasswort');
if (!$bindResult) {
$errno = ldap_errno($ldap);
$error = ldap_error($ldap);
echo "LDAP-Fehler $errno: $error" . PHP_EOL;
// Ausgabe z. B.: LDAP-Fehler 49: Invalid credentials
}
ldap_unbind($ldap);
Differenzierte Fehlerbehandlung anhand des Fehlercodes
<?php
$ldap = ldap_connect('ldap://localhost');
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
@ldap_bind($ldap, 'cn=admin,dc=example,dc=com', 'geheim');
$result = @ldap_search($ldap, 'dc=example,dc=com', '(uid=nichtVorhanden)');
if (!$result) {
$errno = ldap_errno($ldap);
switch ($errno) {
case 32:
echo 'Das gesuchte Objekt wurde nicht gefunden.' . PHP_EOL;
break;
case 49:
echo 'Authentifizierung fehlgeschlagen.' . PHP_EOL;
break;
default:
echo 'Unbekannter LDAP-Fehler: ' . ldap_error($ldap) . PHP_EOL;
}
}
ldap_unbind($ldap);
// Wichtig · Fallstricke
Fehlercode sofort auslesen: Da jede LDAP-Operation den internen Fehlercode überschreibt, muss ldap_errno() unmittelbar nach der fehlgeschlagenen Funktion aufgerufen werden. Spätere Operationen — auch erfolgreiche — setzen den Code auf 0 zurück.
Unterdrückung von PHP-Warnungen: Bei erwartbaren Fehlern empfiehlt es sich, LDAP-Funktionen mit dem @-Operator aufzurufen und den Fehler manuell über ldap_errno() und ldap_error() auszuwerten, um vollständige Kontrolle über die Fehlerausgabe zu behalten.
PHP 8.1: Ab PHP 8.1 erwartet die Funktion ein LDAP\Connection-Objekt anstelle der früher verwendeten resource-Ressource.