#php #active-directory #ldap
#php #active-directory #ldap
Вопрос:
Я совсем новичок в использовании LDAP (на самом деле это мой первый проект), и я не могу найти ответ в Google, который мог бы мне помочь… Итак, моя проблема в том, что я пытаюсь добавить контакт с php в active directory на сервере Windows 2003. Я могу подключиться к серверу, и у меня также нет проблем с ldap_bind. Но когда я запускаю программу, я всегда получаю ошибку:
Предупреждение: ldap_add() [function.ldap-add]: Добавить: Ошибка операций в (Blabla) строке bla
и ldap_error также говорит только «Ошибка операций», что довольно расплывчато, поэтому я даже не знаю, проблема ли это с сервером или с моим кодом. Я видел несколько потоков с аналогичными проблемами, когда серверы не разрешали анонимный доступ, но я даже привязываюсь к учетной записи администратора, и это все еще не работает.
Мой код очень похож на этот:
$ldapcon=ldap_connect("servername");
if($ldapcon) {
$bind=ldap_bind($ldapcon,"Admin@domain.com", "somePassword");
if($bind) {
// create data...
$info=array();
$info["cn"][0] = "Hans Mustermann";
$info["sn"][0] = "Mustermann";
$info["givenName"][0] = "Hans";
$info["mail"][0] = "MustermannH@firma.de";
$info["objectclass"][0] = "top";
$info["objectclass"][1] = "person";
$info["objectclass"][2] = "organizationalPerson";
$info["objectclass"][3] = "contact";
$info["ou"][0] = "Users";
$info["ou"][1] = "contact";
// add Data...
$r=ldap_add($ldapcon, "cn=Hans Mustermann, sn=Mustermann", $info)
or die(ldap_error($ldapcon)); //error: operations error
}
}
Отсутствует ли какая-либо информация? неверен ли код? нужны ли мне какие-либо изменения в настройках ad? это проблема с «настройкой удаленных прав» или что-то еще?
Я просто слишком глуп и слеп, чтобы увидеть проблему, или это нечто большее, что нелегко исправить?
У кого-нибудь из вас есть идея?
Большое спасибо, Чилликарли
Комментарии:
1. Я думаю, вам следует заменить $ ad на $ ldapcon
2. О, извините, проблема была не в этом, я просто забыл изменить это при вставке кода :/
3. ldap_bind и ldap_error также используют переменную $ad, это тоже опечатка?
4. о, нет. да, это так. Я больше не очень сосредоточен, так как я действительно устал исправлять эту глупую проблему. извините. надеюсь, теперь я исправил все опечатки
5. в чем именно заключается ошибка?
Ответ №1:
Вместо условия or die() вы могли бы попробовать это
// add Data...
if(!(ldap_add($ldapcon, "cn=Hans Mustermann, sn=Mustermann", $info))) {
echo "There is a problem to create the accountn";
echo "Please contact your administrator !n";
echo "LDAP Error: ".ldap_error($ldapcon)."n";
exit;
}
ldap_unbind($ldapcon);
Комментарии:
1. да, возможно, это выглядит намного приятнее для пользователя, но это все равно не решает мою проблему, поскольку фактическое сообщение об ошибке такое же и не приносит никакой дополнительной информации. проблема в том, что ldap_add вообще не работает.
2. Можете ли вы добавить запись вручную со всей информацией / полями, установленными так, как они есть в PHP?