【问题标题】:How do I set a LDAP Attribute to NULL如何将 LDAP 属性设置为 NULL
【发布时间】:2017-10-06 09:24:59
【问题描述】:

我正在使用 PHP LDAP 库来访问 Microsoft 的 Active Directory,并且我正在寻找一种清空单值属性的干净方法。

我正在使用 ldap_modify (http://php.net/manual/de/function.ldap-modify.php) 来更新 Active Directory 联系人。不幸的是,当我尝试写入一个空字符串 ('') 时,我从 ldap 库中收到了一个语法错误。当我尝试覆盖单个值的联系人属性而我没有新属性时,就会发生这种情况。

有没有一种干净的方法来删除具有单个值的 ldap 属性?我现在唯一的解决方案是写''(单个空格),但我觉得这可能会导致其他问题。

顺便说一句,清理多值属性很简单。 LDAP 确实允许插入空数组 (array())。

非常感谢您的支持。

【问题讨论】:

  • 你自己说的。您要删除属性值,而不是将其设置为 null。
  • 感谢您的回复。因此,我应该通过 ldap_modify 为单值属性传递一个空数组,而不是传递一个值(空字符串)?

标签: php active-directory ldap


【解决方案1】:

我找到了一种清空活动目录属性的好方法。

对于多值和单值属性,使用 ldap_modify 提交一个空数组会清空该属性。

$entry = array();
$entry["member"] = array();
ldap_modify($link, $dn, $entry);

为什么我首先感到困惑:但是不允许通过 ldap_add() 提交空数组。我对 ldap_modify 和 ldap_add 操作使用了相同的映射函数,但尝试通过 ldap_add 提交空属性时出错。这是不允许的。

很高兴知道:允许通过 ldap_modify 提交一个空数组,即使此属性已为空或尚未设置。

【讨论】: