使用 Zend/Ldap 将值附加到多值 LDAP 属性

Appending values to a multi-value LDAP attribute with Zend/Ldap

我想向现有的多值 LDAP 属性(特别是成员属性)添加一个值,并且我使用的是 Zend Framework 2 Zend/Ldap API.

通过使用 ->getEntry() 从 LAP 服务器获取实际值,使用 setAttribute() 修改结果数组并使用 ->update() 将数组写回 LDAP 服务器,可以很容易地做到这一点,所有 ZF2/Ldap 个函数。

当然有一个但是:
如果我这样做,我可能会向 LDAP 服务器写入一个包含数千个条目的非常大的数组。尤其是在将 'member' 属性写入 GroupOfNames 对象时,这可能会触发(在我的例子中是 openldap 的)memberof 覆盖,并且它开始在所有这些数千个条目上工作(更新?索引?)。

在我的例子中,我碰巧 运行 超时了。如果我在 openldap 服务器中禁用 memberof 覆盖,一切都很好。这可能是一个 openldap 错误或问题,但无论如何,经过这么长的前奏,这是我的问题

Basic php 有一个函数 ldap_mod_add(),它只向现有属性添加一个值,无论已有多少个值。 CLI 的 ldapmodify 的工作原理相同。这样我可能不会超载 memberof 覆盖。

我如何使用 Zend/Ldap API 做类似的事情?

Zend\Ldap\Attribute::setAttribute() 知道如何附加,但这只适用于本地复制的数组。那么如何附加一个值直接到LDAP服务器条目呢?

查看Zend Framework源码,这不可能。 Zend\Ldap\Attribute 使用 ldap 扩展;但是 ldap_mod_add isn't used anywhere.

您应该创建一个功能请求,甚至自己实现它并创建一个拉取请求来实现它。