PHP LDAP想重新命名组,但流汗 - 命名voilation错误
我想用PHP来重命名组,但我得到的错误命名voilationPHP LDAP想重新命名组,但流汗 - 命名voilation错误
以下是我的代码,成功连接到LDAP服务器。 一切工作正常,只需要知道如何解决这个错误。
$ldap = ldap_connect("my_ldap_host");
if ($ldap) {
$bind_rdn = "my_bind_rdn";
$bind_password = "my_bind_password";
$is_binded = ldap_bind($ldap, $bind_rdn, $bind_password);
if($is_binded) {
$ldap_ou = "my_ou";
$ldap_base_dn = "my_base_dn";
$group_entry = array();
$group_entry["cn"] = $group_new_name;
$group_dn = "cn=" . $group_old_name . ",ou=" . $ldap_ou . "," . $ldap_base_dn;
$is_modified = ldap_modify($ldap, $group_dn, $group_entry);
if($is_modified) {
echo "Success";
}
else {
echo "Fail : " . ldap_err($ldap);
// here getting error Naming voilation
}
}
else {
echo "Binding failed";
}
}
else {
echo "Fail to connect to LDAP server";
}
这需要发生。您正尝试修改cn
作为dn
的拍子的条目的cn
。所以你也需要修改cn
。
你需要这样的东西执行:感谢您的输入
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
$is_modified = ldap_rename($ldap, $group_dn, $group_entry, NULL, TRUE);
if($is_modified) {
echo "Success";
}
else {
echo "Fail : " . ldap_err($ldap);
// here getting error Naming voilation
}
谢谢你的回答,我做了一些修改使其工作,你有想法如何强制重命名组,如果它有子条目 – Javed
你将不得不重新命名所有子条目!没有别的办法! – heiglandreas
相关的“修改”是将'''$ group_entry''从一个数组改为一个包含''''cn ='的字符串。 $ group_new_name''' - 一切似乎都一样;)哦!第三个参数是**不是** DN但是是RDN。 ;) – heiglandreas
@heiglandreas。
它非常接近我想要做的。但是在这个代码中需要修改以使其工作。
$is_modified = ldap_rename($ldap, $group_dn, $group_entry, NULL, TRUE);
到
$is_modified = ldap_rename($ldap, $group_old_dn, $group_new_dn, $new_parent, TRUE);
$ group_entry:必须字符串没有阵列,所以我已经使用$ group_new_dn作为字符串而不是$ group_entry
完整的工作代码
$ldap = ldap_connect("my_ldap_host");
if ($ldap) {
$bind_rdn = "my_bind_rdn";
$bind_password = "my_bind_password";
$is_binded = ldap_bind($ldap, $bind_rdn, $bind_password);
if($is_binded) {
$ldap_ou = "my_ou";
$ldap_base_dn = "my_base_dn";
$group_old_dn = "cn=my_old_group_name" . ",ou=" . $ldap_ou . "," . $ldap_base_dn;
$group_new_dn = "cn=my_new_group_name";
$new_parent = null;
$is_modified = ldap_rename($ldap, $group_old_dn, $group_new_dn, $new_parent, TRUE);
if($is_modified) {
echo "Success";
}
else {
echo "Fail : " . ldap_err($ldap);
}
}
else {
echo "Binding failed";
}
}
else {
echo "Fail to connect to LDAP server";
}
第一次我在php中看到'LDAP'代码。想知道它实际上做了什么 –