我使用ldap 2天(所以我对这个工具并不是很有信心)对于一个项目而且我收到了这个错误。
以下是代码:
$ldap_user = $this->container->getParameter('ldap_user');
$ldap_pass= $this->container->getParameter('ldap_pass');
$ldap_co = ldap_connect($this->container->getParameter('ldap_address'));
if ($ldap_co) {
ldap_set_option($ldap_co, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_bind($ldap_co , $ldap_user, $ldap_pass);
$sr =ldap_search($ldap_co, "ou=Users,dc=LOCALLAN,dc=OSAXIS,dc=FR", "uid=*");
$userList = ldap_get_entries($ldap_co, $sr);
$tmp = 0;
for ($i = 0; $i < count($userList) - 1 ; $i++)
{
if ($tmp < $userList[$i]['uidnumber'])
$tmp = $userList[$i]['uidnumber'];
}
$tmp[0]++;
$userId['memberUid']=$user->getUsrLogin();
ldap_mod_add($ldap_co, 'cn=Osaxis,ou=Groups,dc=LOCALLAN,dc=OSAXIS,dc=FR', $userId);
$dn = "uid=".$user->getUsrLogin();
$dn.= ",ou=Users,dc=LOCALLAN,dc=OSAXIS,dc=FR";
$info['cn'] = $user->getUsrLogin();
$info['displayname'] = $user->getUsrNom() . " " . $user->getUsrPrenom();
$info['mail'] = $user->getUsrEmail();
// $info['birthdate'] = str_replace("-", "/",$user->getUsrDateNaissance()->format('d-m-Y'));
$info['entrydate'] = str_replace("-", "/",$user->getUsrDateEmbauche()->format('d-m-Y'));
$info['gecos'] = "User";
$info['gidnumber'] = "513";
$info['objectClass'][0] = "top";
$info['objectClass'][1] = "person";
$info['objectClass'][2] = "organizationalPerson";
$info['objectClass'][3] = "posixAccount";
$info['objectClass'][4] = "shadowAccount";
$info['objectClass'][5] = "inetOrgPerson";
$info['objectClass'][6] = "entryDateOsaxis";
$info['sn'] = $user->getUsrPrenom();
$info['uidnumber'] = $tmp[0];
$info['givenname'] = $user->getUsrNom();
$info['homedirectory'] = "/home/".$user->getUsrLogin();
$info['shadowlastchange'] = "16605";
$info['shadowmax'] = "3650";
$info['telephonenumber'] = $user->getUsrTelport();
$info['userpassword'] = md5($user->getUsrPassword());
ldap_add($ldap_co, $dn, $info);
ldap_close($ldap_co);
起初我以为是因为我添加了birthdate
,而在ldap中没有此名称的字段。但是在删除线后错误仍然存在。我也清除了缓存,但错误仍然存在,并且不够清楚,我无法理解问题是什么......
如果有人有一个很棒的解决方案。