我想在OpenLDAP中添加新用户,并编写以下方法来创建新用户。调用此方法时,我必须传递以下变量:
$ldapconn
:由ldap_connect返回。$username
:我想要创建的用户名。$password
:登录帐户的密码。public static function createNewUser($ldapconn, $username, $password) {
if (!$ldapconn) { return false; }
require_once("LDAPConfigurator.php");
$r = ldap_bind($ldapconn, "cn=admin,dc=test,dc=com", "12345X");
// Prepare data
$info["cn"]="John Jones";
$info["sn"]="Jones";
$info["mail"]="jonj@example.com";
$info["objectclass"]="person";
// Add data to directory
$r = ldap_add($ldapconn, "cn=John Jones,dc=test,dc=com", $info);
return true;
}
将在此方法之外关闭LDAP连接$ldapconn
。
准备好的数据是从this document复制的。
我希望它可以告诉我一个新的孩子在" dc = test,dc = com"在phpLDAPadmin中。但最后的结果并没有出现,并告诉我:
Warning: ldap_add(): Add: Object class violation in /var/www/html/test.php on line 23
我想问一下如何解决问题(Object class violation
)?
答案 0 :(得分:1)
"为inetOrgPerson"是inetorgperson.schema定义的OpenLDAP中人员条目的默认对象类。所以你需要这样做,
$info["objectclass"]="inetOrgPerson";
如果你想使用像#34; person"这样的自定义对象类。你需要在模式中扩展inetOrgPerson。