ldap_errno

(PHP 4, PHP 5, PHP 7, PHP 8)

ldap_errno返回最后一个 LDAP 命令的 LDAP 错误号

说明

ldap_errno(LDAP\Connection $ldap): int

返回最后一个 LDAP 命令返回的标准化错误号。此数字可以使用 ldap_err2str() 转换为文本错误消息。

参数

ldap

一个 LDAP\Connection 实例,由 ldap_connect() 返回。

返回值

返回此链接的最后一个 LDAP 命令的 LDAP 错误号。

变更日志

版本 说明
8.1.0 ldap 参数现在需要一个 LDAP\Connection 实例;以前,需要一个有效的 ldap link 资源

范例

除非你在 php.ini 中将警告级别降低到足够低,或者在你的 LDAP 命令之前加上 @(at)字符以抑制警告输出,否则生成的错误也会显示在你的 HTML 输出中。

范例 #1 生成和捕获错误

<?php
// 此示例包含一个错误,我们将捕获它。
$ld = ldap_connect("localhost");
$bind = ldap_bind($ld);
// 过滤器表达式中的语法错误(errno 87),
// 必须为 "objectclass=*" 才能工作。
$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";
die(
"Argh!<br />\n");
}
$info = ldap_get_entries($ld, $res);
echo
$info["count"] . " matching entries.<br />\n";
?>

参见

  • ldap_err2str() - 将 LDAP 错误号转换为字符串错误消息
  • ldap_error() - 返回最后一个 LDAP 命令的 LDAP 错误消息

添加备注

用户贡献备注 2 个备注

1
ahall at mirapoint dot com
23 年前
几个好的错误代码,可以让你开始。如果你想检测到由于记录已经存在而导致 ldap_add 失败,ldap_error == 0x44。这意味着,你可以做类似的事情

$r = ldap_add($ds, $dn, $info);
if (!$r) {
if (ldap_errno($ds) == 0x44) {
// 对此做点什么
} else {
// 实际的失败
}
}

类似地,在 ldap_delete 上,如果你尝试删除不存在的内容,你会得到 0x20 值(没有这样的对象)。
0
匿名
22 年前
常见的 LDAP 错误代码

LDAP_SUCCESS 0x00
LDAP_OPERATIONS_ERROR 0x01
LDAP_PROTOCOL_ERROR 0x02
LDAP_TIMELIMIT_EXCEEDED 0x03
LDAP_SIZELIMIT_EXCEEDED 0x04
LDAP_COMPARE_FALSE 0x05
LDAP_COMPARE_TRUE 0x06
LDAP_AUTH_METHOD_NOT_SUPPORTED 0x07
LDAP_STRONG_AUTH_REQUIRED 0x08
// 在 LDAPv3 中未使用
LDAP_PARTIAL_RESULTS 0x09

// 下面的 5 个是 LDAPv3 中的新增
LDAP_REFERRAL 0x0a
LDAP_ADMINLIMIT_EXCEEDED 0x0b
LDAP_UNAVAILABLE_CRITICAL_EXTENSION 0x0c
LDAP_CONFIDENTIALITY_REQUIRED 0x0d
LDAP_SASL_BIND_INPROGRESS 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
// 下面的两个在 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_RANGE_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_RESULTS_TOO_LARGE 0x46
// 下面的两个是 LDAPv3 的
LDAP_AFFECTS_MULTIPLE_DSAS 0x47
LDAP_OTHER 0x50

// 由一些 API 使用
LDAP_SERVER_DOWN 0x51
LDAP_LOCAL_ERROR 0x52
LDAP_ENCODING_ERROR 0x53
LDAP_DECODING_ERROR 0x54
LDAP_TIMEOUT 0x55
LDAP_AUTH_UNKNOWN 0x56
LDAP_FILTER_ERROR 0x57 /* 87 */
LDAP_USER_CANCELLED 0x58
LDAP_PARAM_ERROR 0x59
LDAP_NO_MEMORY 0x5a

// LDAPv3 预备代码
LDAP_CONNECT_ERROR 0x5b
LDAP_NOT_SUPPORTED 0x5c
LDAP_CONTROL_NOT_FOUND 0x5d
LDAP_NO_RESULTS_RETURNED 0x5e
LDAP_MORE_RESULTS_TO_RETURN 0x5f
LDAP_CLIENT_LOOP 0x60
LDAP_REFERRAL_LIMIT_EXCEEDED 0x61
To Top