Php ldap_add():添加:对象类冲突错误

Php ldap_add():添加:对象类冲突错误,php,ldap,opends,Php,Ldap,Opends,当我试图通过PHP向OpenDS添加属性时,我得到以下错误: ldap_add():添加:对象类冲突 请帮忙 这是我的密码 <?php $ldapconfig['host'] = 'PC100'; $ldapconfig['port'] = 1389; $ldapconfig['basedn'] = 'dc=company,dc=com'; $ds=ldap_connect($ldapconfig['host'], $ldapconfig['port']); $password=1;

当我试图通过PHP向OpenDS添加属性时,我得到以下错误:

ldap_add():添加:对象类冲突

请帮忙

这是我的密码

<?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'] = "lkl@fh.com";
  $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

因此:


请提供一些代码。当您尝试为不是已设置属性的类成员的对象设置某些属性时,可能会出现此错误。。。在LDAP中,您的对象必须是实现了此属性的类的成员。感谢您的回复,我修改了我的帖子请查看它不是问题,问题是当我添加$ldaprecord['mmmm']=“77878”;这个代码行错误就要来了。我怎么能添加像那样的附加属性呢?OK,这可能是因为这个属性没有在LDAP中的任何类中实现。。。尝试使用inetOrgPerson的某些现有属性。。。试着看看这里:谢谢你的回复。有没有可能创建我自己的属性inetOrgPerson类?也许在阅读本文之后:你应该能够创建你自己的objectclass(例如,从inetOrgPerson扩展)这将有自定义属性…opends再次出现问题现在我想将unicode保存在opends目录中,它可以保存,但当我获取结果时,unicode字符没有按原样显示
$ldaprecord['cn'] = "roshan1";
$ldaprecord['givenName'] = "mkljl";
$ldaprecord['sn'] = "roshan";
$ldaprecord['objectclass'][0] = "top";
$ldaprecord['objectclass'][1] = "person";
$ldaprecord['objectclass'][2] = "inetOrgPerson";
$ldaprecord['mail'] = "lkl@fh.com";
$ldaprecord['mmmm'] = "77878";