ldap_rename 只能移动目录树的叶子节点。如果您的 ldap 条目有任何子条目,那么 ldap_rename 不是您需要的工具。我们需要更改用户名,但这会更改 dn。ldap_rename 不起作用,因为我们的每个用户 ldap 条目都有几个关联的子条目。我们必须编写一个函数来递归地将子树复制到新位置,然后删除原始版本。以下是基本算法
function recursive_move($old_username, $new_username)
对旧用户名执行 ldap_search 以获取正确的条目
ldap_get_attributes 以从 ldap 条目获取值数组
遍历数组中的每个属性,将 $old_username 的出现次数替换为 $new_username
在新的位置使用 ldap_add 添加属性数组
使用 ldap_modify 修改任何其他属性
列出每个子条目
对每个子条目调用函数 recursive_move
删除当前条目
返回