мы несколько дней боремся со странной ошибкой ldap.Следующий код работал нормально более года.Внезапно он возвращает local error (0x52)
для нескольких пользовательских CN.
Соответствующий код (подключение и связывание всегда работают, для некоторых пользовательских CN не удается выполнить поиск):
$ldapconn = ldap_connect("LDAP URL")
or die("Connection failed.");
ldap_bind($ldapconn, 'USERNAME', 'PASSWORD')
or die("Binding failed");
$ldapsearch = ldap_search($ldapconn, '', '(&(uniqueMember=CN=FIRSTNAME LASTNAME,O=COMPANY)(objectClass=groupOfNames))')
or die("Search failed: ".ldap_error($ldapconn));
Странно то, что этот код работает для большинства пользователей., но для некоторых это не так.
Так, например:
$ldapsearch = ldap_search($ldapconn, '', '(&(uniqueMember=CN=FIRSTNAME_1 LASTNAME_1,O=COMPANY)(objectClass=groupOfNames))')
-> works
$ldapsearch = ldap_search($ldapconn, '', '(&(uniqueMember=CN=FIRSTNAME_2 LASTNAME_2,O=COMPANY)(objectClass=groupOfNames))')
-> fails
Но оба CN определенно существуют (в браузере softerra ldap обе команды поиска работают, также в Lotus Notes оба пользователя кажутсяидентичен, только с некоторыми клиентами ldap и php-кодом, который не работает).
Мы также нашли следующее утверждение от ibm на этой странице: https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_71/apis/ldap_error_condt.htm
0x52 - Some local error occurred. This usually indicates that either the LDAP support (IBM® i option 32) is not installed on the system, or a malloc() operation has failed
Поддержка Ldap установлена, и мы не знаем, где может быть ошибка выделения памяти.
Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.
Любая помощь приветствуется
ОБНОВЛЕНИЕ:
Мы попытались выполнить поиск в CentOS с помощью cli и получили ту же локальную ошибку (так что это не проблема php ldap, скорее, это проблема с сервером Notes domino):
ldapsearch -D "USERNAME" -w PASSWORD -h LDAP_URL -b "" -s sub "(&(uniqueMember=CN=FIRSTNAME LASTNAME,O=COMPANY)(objectClass=groupOfNames))"
-> ldap_result: Local error (-2)
Ошибка возникает всегдадля тех же пользователей.Пользовательские CN, где возникает проблема, не имеют специальных символов или аналогичных и не содержат двойных имен и фамилий.