2016-08-23 61 views
2

我想在OpenLDAP中添加一个新用户,并编写以下方法来创建一个新用户。在调用此方法时,必须通过以下变量:如何通过PHP在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"]="[email protected]"; 
    $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复制而来。

我希望它可以在phpLDAPadmin中的“dc = test,dc = com”下为我显示一个新的子项。但最后的结果却是一无所获出现,并显示我:

Warning: ldap_add(): Add: Object class violation in /var/www/html/test.php on line 23 

我想请问如何解决这个问题(Object class violation)?

回答

1

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

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

如果你想使用自定义的对象类,如“人”,你需要在架构扩展为inetOrgPerson。

+0

如何集成'$ username'和'$ password'以允许用户登录任何openldap客户端linux机器? – Casper

+0

@CasperLI你的意思是“整合$用户名和$密码”? – Roshith