ldap_add():地址:Object类的违规错误
当我尝试属性添加到通过PHP了OpenDS我得到以下错误:ldap_add():地址:Object类的违规错误
ldap_add(): Add: Object class violation
请帮助。
这里是我的代码
<?php
$ldapconfig['host'] = 'PC100';
$ldapconfig['port'] = 1389;
$ldapconfig['basedn'] = 'dc=company,dc=com';
$ds=ldap_connect($ldapconfig['host'], $ldapconfig['port']);
$password=1;
$username="cn=Directory Manager";
if ($bind=ldap_bind($ds, $username, $password)) {
echo("Login correct");
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); // IMPORTANT
$dn = "cn=roshan1,dc=example,dc=com";
//$newuser["objectclass"] = "inetOrgPerson";
//$newuser["cn"] = "new1";
//$newuser["sn"] = "user";
$ldaprecord['cn'] = "roshan1";
$ldaprecord['givenName'] = "mkljl";
$ldaprecord['sn'] = "roshan";
$ldaprecord['objectclass'] = "inetOrgPerson";
$ldaprecord['mail'] = "[email protected]";
$ldaprecord['mmmm'] = "77878";
// add data to directory
$r = ldap_add($ds, $dn, $ldaprecord);
} else {
echo("Unable to bind to server.</br>");
}
?>
如果我从它工作正常的代码删除$ldaprecord['mmmm'] = "77878";
。我如何添加这样的新属性?
嗯,它看起来像您正在尝试只设置objectclass
到inetOrgPerson
,但你也必须设置从哪个inetorgPerson
正在扩大其他上层阶级 - 这将是top
和person
也许......
所以:
$ldaprecord['cn'] = "roshan1";
$ldaprecord['givenName'] = "mkljl";
$ldaprecord['sn'] = "roshan";
$ldaprecord['objectclass'][0] = "top";
$ldaprecord['objectclass'][1] = "person";
$ldaprecord['objectclass'][2] = "inetOrgPerson";
$ldaprecord['mail'] = "[email protected]";
$ldaprecord['mmmm'] = "77878";
它不是问题的问题是当我添加$ ldaprecord ['mmmm'] =“77878”;此代码行错误即将到来如何添加像 – 2011-04-20 10:25:02
这样的附加属性好,所以这可能是因为此属性未在LDAP中的任何类中实现...尝试使用inetOrgPerson的一些现有属性...尝试查看此处:http://oav.net/mirrors/LDAP-ObjectClasses.html – shadyyx 2011-04-20 10:38:18
感谢您的回复是否有任何posibity创建我自己的属性inetOrgPerson类 – 2011-04-20 10:45:56
请提供一些代码。当您尝试将某些属性设置为不属于设置了属性的类的对象时,可能会引发此错误...在LDAP中,您的对象必须是memberOf具有此属性的类。 – shadyyx 2011-04-20 10:06:20
感谢您的回复我修改了我的帖子请看它 – 2011-04-20 10:15:37