【发布时间】:2013-06-11 00:56:05
【问题描述】:
我有这个 ldap 条目:
cn=blah,ou=apples,ou=people,dc=yay,dc=edu
我需要将该条目移至:
cn=blah,ou=oranges,ou=people,dc=yay,dc=edu
我的脚本都是 PHP,所以我一直在尝试使用 php.net/ldap_rename
ldap_rename($connection, "cn=blah,ou=apples,ou=people,dc=yay,dc=edu", "cn=blah", "ou=oranges,ou=people,dc=yay,dc=edu", true);
不起作用。它返回 false。
这个http://us2.php.net/manual/en/function.ldap-rename.php#82393 评论提到eDirectory 想要将父级保留为NULL。喜欢:
ldap_rename($connection, "cn=blah,ou=apples,ou=people,dc=yay,dc=edu", "cn=blah", NULL, true);
返回 TRUE 但实际上并不移动条目。这并不奇怪,因为它没有改变父母......我敢肯定它可以将 cn=blah 更改为其他东西......
我曾想过删除该条目并重新创建它。但这是一种痛苦的方式。写出并运行 LDIF 文件也会很痛苦。
那么,我如何在 php 中将条目从一个 OU 移动到另一个 OU,而不会遇到其他两个选项的痛苦?
我在做什么:
- Ubuntu 12.04 LTS
- PHP 5.3.10
- eDirectory 8.8 在 SLES 11 上
编辑
所以,我发现了这个:
modrdn 更改类型不能将条目移动到完全不同的子树。要将条目移动到完全不同的分支,您必须使用旧条目的属性在备用子树中创建一个新条目,然后删除旧条目。
来自http://www.centos.org/docs/5/html/CDS/ag/8.0/Creating_Directory_Entries-LDIF_Update_Statements.html
我发现其他几页有类似的陈述。
所以听起来我必须创建一个新条目,复制属性,删除旧的。就像我上面提到的第二个痛苦的选择一样。
【问题讨论】:
-
能否告知您正在运行的 LDAP 版本?
-
所述评论明确谈到重命名而不是移动条目。所以这里不适用。您是否尝试在第三个参数中给它一个完整的 dn?您确定绑定到 LDAP 的用户有足够的权限吗?
-
LDAP v3.在代码的前面,我明确地设置了协议。我正在测试的用户是目录的主要管理员。所以它有正确的烫发。
-
刚刚尝试将全新的 dn 传递给第三个参数。 ldap_rename 返回 true,但 eDirectory 没有移动条目。
标签: php ldap edirectory