如何通过PHP在OpenLDAP中添加新用户?

时间:2016-08-23 04:52:05

标签: php ldap openldap

我想在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)?

1 个答案:

答案 0 :(得分:1)

"为inetOrgPerson"是inetorgperson.schema定义的OpenLDAP中人员条目的默认对象类。所以你需要这样做,

$info["objectclass"]="inetOrgPerson";

如果你想使用像#34; person"这样的自定义对象类。你需要在模式中扩展inetOrgPerson。