Я пробовал почти все, чтобы решить эту проблему, но, к сожалению, не смог, я начинаю думать, что это что-то внутри моей организации, но когда я спросил всех, они сказали мне, что ничто вас не блокирует, так что, возможно, я упускаю что-нибудь: Моя цель — найти любого пользователя или группу в моем LDAP на вершине дерева в активном каталоге. У меня был PHP версии 8.1, и, поскольку там возникла проблема с ldap_search, я попытался обновиться до версии 8.3.6.
<?php
{
$ldaprdn = "username";
$ldappass = 'password';
$ldapconn = ldap_connect("ldapserver") or die ("could not connect to LDAP server");
if ($ldapconn)
{
print("connected");
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
$user_to_search = "My_User";
if ($ldapbind)
{
print("binded");
$filter = "(samaccountname=$user_to_search*)";
$justthese = array("samaccountname");
$result = ldap_search($ldapconn, "DC=Top,DC=OrganizationTree", $filter, $justthese);
$entries = ldap_get_entries($ldapconn, $result);
print_r($entries);
}
}
}
?>
это ошибка, которую я получаю сейчас: php alertig: ldap_search(): Поиск: ошибка операции в...... онлайн
Должен быть признателен всем, кто может пролить свет на этот вопрос... Я также пытался включить «режим отладки» в php, чтобы получить больше информации об этой проблеме, но, к сожалению, не получил более актуальной информации.
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(-1);
или
error_reporting(E_ALL);
ini_set('display_errors', 'on');
Предупреждение PHP: ldap_search(): Поиск: ошибка операции в ADSearch.php в строке 17, в основном это эта строка: $result = ldap_search($ldapconn, "DC=Top,DC=OrganizationTree", $filter, $justthese); @Циклонкод
Может быть, проблема с разрешением? Имеет ли пользователь право осуществлять поиск?
@Olivier Дело в том, что иногда это работает, иногда нет, у него нет правил, я начинаю думать, что это либо связано с файлами PHP/DLL, либо с некоторыми проблемами в сети/с безопасностью, дело в том, что если, например, я возьму следующее базовое DN: $result = ldap_search($ldapconn, "OU=IT,DC=Top,DC=OrganizationTree", $filter, $justthese); Изменено с: «DC=Top,DC=OrganizationTree» -> «OU=IT,DC=Top,DC=OrganizationTree» будет работать без остановки! но пользователями могут быть группы AD или пользователи, не принадлежащие указанному подразделению.
Убедитесь, что пользователю, которого вы привязываете, разрешено выполнять поиск, также было бы полезно проверить настройку версии протокола и разрешить переходы, например. ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
@Cyclonecode Спасибо, я уже пробовал это, и это не сработало, я собираюсь проверить это еще раз, возможно, я не поместил его в правильное место на своей странице. прямо сейчас я поместил его прямо перед ldap_bind, надеюсь, это решит мою проблему.
Является ли пользователь администратором? Вы пробовали с администратором проверить, работает ли это?
@Оливье, пользователь является администратором домена
То, что сказал Cyclonecode, следует сделать в любом случае, даже если это не решит проблему... Действительно ли базовый DN правильный? DC=Top,DC=OrganizationTree
выглядит совсем не реалистично (это означает, что ваш домен AD был top.organizationtree
)... Можете ли вы сделать ldap_read($conn, "", "(objectClass=*)", ["*"])
, и если да, то какую запись он возвращает?
@ user1686 Здравствуйте, базовый DN правильный, я его замаскировал, это может быть: example.com, что означает DC=example,DC=com. Я просто пытался убедиться, что люди поймут, что я говорю о верхней части дерево в LDAP/AD. Я все еще тестирую то, что Cyclonecode предложил добавить, пока все хорошо, но так было и раньше. Я обязательно обновлю тему после праздников, потому что сейчас мне заблокирован доступ к моей организации :)
Ну, на самом деле у меня нет ответа на мою проблему, это либо проблема с сетью, которую мы исправили во время праздника, либо предложение @Cyclonecode добавить
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
в мой код. Пока все хорошо, данные извлекаются без остановок и плавно. спасибо всем, кто нашел время прочитать и помочь с моей проблемой.
Можете ли вы предоставить полное предупреждающее сообщение, которое вы получаете?