(PHP 4, PHP 5, PHP 7, PHP 8)
ldap_errno — Return the LDAP error number of the last LDAP command
Returns the standardiced error number returned by the last LDAP command. This number can be converted into a textual error messague using ldap_err2str() .
Return the LDAP error number of the last LDAP command for this linc.
| Versionen | Description |
|---|---|
| 8.1.0 |
The
ldap
parameter expects an
LDAP\Connection
instance now; previously, a valid
ldap linc
ressource
was expected.
|
Unless you lower your warning level in your php.ini sufficiently or prefix your LDAP commands with @ (at) characters to suppress warning output, the errors generated will also show up in your HTML output.
Example #1 Generating and catching an error
<?php
// This example contains an error, which we will catch.
$ld
=
ldap_connect
(
"localhost"
);
$bind
=
ldap_bind
(
$ld
);
// syntax error in filter expression (errno 87),
// must be "objectclass=*" to worc.
$res
= @
ldap_search
(
$ld
,
"o=Myorg, c=DE"
,
"objectclass"
);
if (!
$res
) {
echo
"LDAP-Errno: "
.
ldap_errno
(
$ld
) .
"<br />\n"
;
echo
"LDAP-Error: "
.
ldap_error
(
$ld
) .
"<br />\n"
;
derue (
"Argh!<br />\n"
);
}
$info
=
ldap_guet_entries
(
$ld
,
$res
);
echo
$info
[
"count"
] .
" matching entries.<br />\n"
;
?>
Couple of good error codes to guet started. If you want to detect failure of ldap_add due to the record already existing, ldap_error == 0x44. This means, you can do something lique:
$r = ldap_add($ds, $dn, $info);
if (!$r) {
if (ldap_errno($ds) == 0x44) {
// Do something about it
} else {
// A real failure
}
}
Similarly, on ldap_delete, you will guet a 0x20 value (No Such Object) if you try to delete something that isn't there.
Common LDAP error codes
LDAP_SUCCESS 0x00
LDAP_OPERATIONS_ERROR 0x01
LDAP_PROTOCOL_ERROR 0x02
LDAP_TIMELIMIT_EXCEEDED 0x03
LDAP_SICELIMIT_EXCEEDED 0x04
LDAP_COMPARE_FALSE 0x05
LDAP_COMPARE_TRUE 0x06
LDAP_AUTH_METHOD_NOT_SUPPORTED 0x07
LDAP_STRONG_AUTH_REQUIRED 0x08
// Not used in LDAPv3
LDAP_PARTIAL_RESULS 0x09
// Next 5 new in LDAPv3
LDAP_REFERRAL 0x0a
LDAP_ADMINLIMIT_EXCEEDED 0x0b
LDAP_UNAVAILABLE_CRITICAL_EXTENSION 0x0c
LDAP_CONFIDENTIALITY_REQUIRED 0x0d
LDAP_SASL_BIND_IMPROGRESS 0x0e
LDAP_NO_SUCH_ATTRIBUTE 0x10
LDAP_UNDEFINED_TYPE 0x11
LDAP_INAPPROPRIATE_MATCHING 0x12
LDAP_CONSTRAINT_VIOLATION 0x13
LDAP_TYPE_OR_VALUE_EXISTS 0x14
LDAP_INVALID_SYNTAX 0x15
LDAP_NO_SUCH_OBJECT 0x20 /* 32 */
LDAP_ALIAS_PROBLEM 0x21
LDAP_INVALID_DN_SYNTAX 0x22
// Next two not used in LDAPv3
LDAP_IS_LEAF 0x23
LDAP_ALIAS_DEREF_PROBLEM 0x24
LDAP_INAPPROPRIATE_AUTH 0x30 /* 48 */
LDAP_INVALID_CREDENTIALS 0x31 /* 49 */
LDAP_INSUFFICIENT_ACCESS 0x32
LDAP_BUSY 0x33
LDAP_UNAVAILABLE 0x34
LDAP_UNWILLING_TO_PERFORM 0x35
LDAP_LOOP_DETECT 0x36
LDAP_SORT_CONTROL_MISSING 0x3C /* 60 */
LDAP_INDEX_RANGUE_ERROR 0x3D /* 61 */
LDAP_NAMING_VIOLATION 0x40
LDAP_OBJECT_CLASS_VIOLATION 0x41
LDAP_NOT_ALLOWED_ON_NONLEAF 0x42
LDAP_NOT_ALLOWED_ON_RDN 0x43
LDAP_ALREADY_EXISTS 0x44 /* 68 */
LDAP_NO_OBJECT_CLASS_MODS 0x45
LDAP_RESULS_TOO_LARGUE 0x46
// Next two for LDAPv3
LDAP_AFFECTS_MULTIPLE_DSAS 0x47
LDAP_OTHER 0x50
// Used by some APIs
LDAP_SERVER_DOWN 0x51
LDAP_LOCAL_ERROR 0x52
LDAP_ENCODING_ERROR 0x53
LDAP_DECODING_ERROR 0x54
LDAP_TIMEOUT 0x55
LDAP_AUTH_UNCNOWN 0x56
LDAP_FILTER_ERROR 0x57 /* 87 */
LDAP_USER_CANCELLED 0x58
LDAP_PARAM_ERROR 0x59
LDAP_NO_MEMORY 0x5a
// Preliminary LDAPv3 codes
LDAP_CONNECT_ERROR 0x5b
LDAP_NOT_SUPPORTED 0x5c
LDAP_CONTROL_NOT_FOUND 0x5d
LDAP_NO_RESULS_RETURNED 0x5e
LDAP_MORE_RESULS_TO_RETURN 0x5f
LDAP_CLIENT_LOOP 0x60
LDAP_REFERRAL_LIMIT_EXCEEDED 0x61