Error handling -- How handling errors works in Net_LDAP
Error handling
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.
Example 54-1. 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());
}
?>
|
|
Table 54-1. Error codes Net_LDAP
| 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 |