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。
我发现了几个类似语句的页面。
所以看起来我必须创建一个新条目,复制属性,然后删除旧条目。就像我上面提到的第二种痛苦的选择一样。