由于我遇到了同样的问题,我搜索并找到了解决方案。
define(LDAP_OPT_DIAGNOSTIC_MESSAGE, 0x0032)
$handle = ldap_connect('ldap://active.directory.server/');
$bind = ldap_bind($handle, 'user', 'expiredpass');
if (ldap_get_option($handle, LDAP_OPT_DIAGNOSTIC_MESSAGE, $extended_error)) {
echo "Error Binding to LDAP: $extended_error";
} else {
echo "Error Binding to LDAP: No additional information is available.";
}
这将返回如下内容:
绑定到 LDAP 时出错:80090308:LdapErr:DSID-0C0903D0,注释:AcceptSecurityContext 错误,数据 773,v2580
重要的部分是“数据”之后的代码,它代表错误代码 49 的 LDAP 子代码。
您可以使用此函数解析子代码:
function parseExentedLdapErrorCode($message) {
$code = null;
if (preg_match("/(?<=data\s).*?(?=\,)/", $message, $code)) {
return $code[0];
}
return null;
}