2016-06-20 7 views
-1

Gibt es jemanden, der weiß, wie man ganze LDAP-Fehlercodes bekommt?LDAP-Fehlercodes

Ich verwende in PHP ldap_error($ldapConn) für Code und ldap_errno($ldapConn) für den Namen des Fehlers. Aber error 49 - LDAP_INVALID_CREDENTIALS hat 'suberrors' wie 49/525, 49/530 usw. Ich brauche ganze Zahl von Fehler, aber ldap_error() zeigt nur 49 zum Beispiel.

Antwort

0

Sie können etwas tun:

ldap_get_option($ldapConn, LDAP_OPT_ERROR_STRING, $diagnosticMsg); 
echo $diagnosticMsg; 

Wo $diagnosticMsg ist dann die gesamte Nachricht, die die zusätzliche Informationen enthält, die Sie suchen.

In neueren Versionen von PHP können Sie stattdessen LDAP_OPT_DIAGNOSTIC_MESSAGE verwenden. Das wird den erweiterten Fehlercode enthalten, nach dem Sie suchen. Sie können es so etwas parsen:

function getExtendedErrorNumber($diagnosticMsg) { 
    $errorNumber = 0; 

    if (!empty($diagnosticMsg)) { 
     $errorNumber = explode(',', $diagnosticMsg); 
     if (!isset($errorNumber[2])) { 
      return 0; 
     }; 
     $errorNumber = explode(' ', $errorNumber[2]); 
     if (!isset($errorNumber[2])) { 
      return 0; 
     }; 
     $errorNumber = hexdec(intval($errorNumber[2])); 
    } 

    return $errorNumber; 
} 
+0

Welche Version von PHP brauche ich für LDAP_OPT_DIAGNOSTIC_MESSAGE? Server mit 5.4.16. – Thomas

+0

Beide Konstanten haben am Ende den gleichen Wert, also sollte es technisch nicht darauf ankommen, was Sie verwenden. Aber Sie müssen LDAP_OPT_ERROR_STRING mit dieser PHP-Version verwenden. Der andere ist nur spätere Versionen von 5.6 und 7.0 denke ich. – ChadSikorra

+0

OK, danke :) – Thomas