Nearly all of Net_LDAPs methods return a Net_LDAP_Error object if something went wrong. You always should check for errors after you performed an action to be sure that your application doesn't do things you don't want it to do.
Handling errors is an easy task, you just have to test the return value as shown below. If an error occured, you can halt the script for example. In other cases, you may just log the error, but what exactly happens depends on your specific situation, of course.
You can use the getMessage() method of the error object to retrieve the error message explaining the problem and getCode() to get the error code which is usually the LDAP-Error code (see Table below) and may be used for automated reaction on errors.
Dealing with errors
<?php
// Perform an arbitrary action:
$result = $ldap->search($searchbase, $filter, $options);
// Check, if an error occured and do something.
// Here we use die() to show the message of the error.
if (PEAR::isError($result)) {
die($result->getMessage());
}
?>
Error code | Description |
---|---|
0x00 | LDAP_SUCCESS |
0x01 | LDAP_OPERATIONS_ERROR |
0x02 | LDAP_PROTOCOL_ERROR |
0x03 | LDAP_TIMELIMIT_EXCEEDED |
0x04 | LDAP_SIZELIMIT_EXCEEDED |
0x05 | LDAP_COMPARE_FALSE |
0x06 | LDAP_COMPARE_TRUE |
0x07 | LDAP_AUTH_METHOD_NOT_SUPPORTED |
0x08 | LDAP_STRONG_AUTH_REQUIRED |
0x09 | LDAP_PARTIAL_RESULTS |
0x0a | LDAP_REFERRAL |
0x0b | LDAP_ADMINLIMIT_EXCEEDED |
0x0c | LDAP_UNAVAILABLE_CRITICAL_EXTENSION |
0x0d | LDAP_CONFIDENTIALITY_REQUIRED |
0x0e | LDAP_SASL_BIND_INPROGRESS |
0x10 | LDAP_NO_SUCH_ATTRIBUTE |
0x11 | LDAP_UNDEFINED_TYPE |
0x12 | LDAP_INAPPROPRIATE_MATCHING |
0x13 | LDAP_CONSTRAINT_VIOLATION |
0x14 | LDAP_TYPE_OR_VALUE_EXISTS |
0x15 | LDAP_INVALID_SYNTAX |
0x20 | LDAP_NO_SUCH_OBJECT |
0x21 | LDAP_ALIAS_PROBLEM |
0x22 | LDAP_INVALID_DN_SYNTAX |
0x23 | LDAP_IS_LEAF |
0x24 | LDAP_ALIAS_DEREF_PROBLEM |
0x30 | LDAP_INAPPROPRIATE_AUTH |
0x31 | LDAP_INVALID_CREDENTIALS |
0x32 | LDAP_INSUFFICIENT_ACCESS |
0x33 | LDAP_BUSY |
0x34 | LDAP_UNAVAILABLE |
0x35 | LDAP_UNWILLING_TO_PERFORM |
0x36 | LDAP_LOOP_DETECT |
0x3C | LDAP_SORT_CONTROL_MISSING |
0x3D | LDAP_INDEX_RANGE_ERROR |
0x40 | LDAP_NAMING_VIOLATION |
0x41 | LDAP_OBJECT_CLASS_VIOLATION |
0x42 | LDAP_NOT_ALLOWED_ON_NONLEAF |
0x43 | LDAP_NOT_ALLOWED_ON_RDN |
0x44 | LDAP_ALREADY_EXISTS |
0x45 | LDAP_NO_OBJECT_CLASS_MODS |
0x46 | LDAP_RESULTS_TOO_LARGE |
0x47 | LDAP_AFFECTS_MULTIPLE_DSAS |
0x50 | LDAP_OTHER |
0x51 | LDAP_SERVER_DOWN |
0x52 | LDAP_LOCAL_ERROR |
0x53 | LDAP_ENCODING_ERROR |
0x54 | LDAP_DECODING_ERROR |
0x55 | LDAP_TIMEOUT |
0x56 | LDAP_AUTH_UNKNOWN |
0x57 | LDAP_FILTER_ERROR |
0x58 | LDAP_USER_CANCELLED |
0x59 | LDAP_PARAM_ERROR |
0x5a | LDAP_NO_MEMORY |
0x5b | LDAP_CONNECT_ERROR |
0x5c | LDAP_NOT_SUPPORTED |
0x5d | LDAP_CONTROL_NOT_FOUND |
0x5e | LDAP_NO_RESULTS_RETURNED |
0x5f | LDAP_MORE_RESULTS_TO_RETURN |
0x60 | LDAP_CLIENT_LOOP |
0x61 | LDAP_REFERRAL_LIMIT_EXCEEDED |
1000 | Unknown Net_LDAP Error |