Php 无法使用ldap\u mod\u replace替换任何属性

Php 无法使用ldap\u mod\u replace替换任何属性,php,ldap,openldap,Php,Ldap,Openldap,我正在尝试在我的OpenLDAP服务器上构建一个自助门户,这样用户就可以更新他们的GECOS条目、电话号码等。他们不会按照要求更新密码 问题是我无法更新LDAP服务器中的任何属性。我使用PHP调用ldap\u mod\u replace和有效的DN(现在的根管理DN)来更新这些属性。我收到的错误是: (53)服务器不愿意执行 已成功绑定到服务器。使用相同的绑定DN,我可以使用第三方工具(JXplorer)更新我想要更新的任何属性 以下是执行更新的确切代码片段,为保护IP而编辑: function

我正在尝试在我的OpenLDAP服务器上构建一个自助门户,这样用户就可以更新他们的GECOS条目、电话号码等。他们不会按照要求更新密码

问题是我无法更新LDAP服务器中的任何属性。我使用PHP调用ldap\u mod\u replace和有效的DN(现在的根管理DN)来更新这些属性。我收到的错误是:

(53)服务器不愿意执行

已成功绑定到服务器。使用相同的绑定DN,我可以使用第三方工具(JXplorer)更新我想要更新的任何属性

以下是执行更新的确切代码片段,为保护IP而编辑:

function saveAccountData($connection, $dn, $newAcctData, $isAdmin = false) {
    $permittedData = array();
    $resp = ldap_bind($connection, "cn=rootdn,dc=domain,dc=tld", "reallygoodpassword");
    if (!$resp) {
        die("Failed to bind to LDAP with authenticated credentials! $resp\n");
    }
    if ($isAdmin) {
        $permittedData = $newAcctData;
    }
    else {
        $permittedData["homedirectory"] = $newAcctData["homeDirectory"];
        $permittedData["gecos"] = $newAcctData["gecos"];
        $permittedData["loginshell"] = $newAcctData["loginShell"];
        $permittedData["telephonenumber"] = $newAcctData["telephoneNumber"];
    }
    return ldap_mod_replace($connection, $dn, $permittedData);
}
调用此函数后,我在外部检查错误,这就是我带着错误消息到达这里的原因

我参考了本手册:

我已经回顾了几个主题,但这些主题似乎适用于Active Directory:

我仍然尝试过这些解决方案,但没有效果。这里出了什么问题


提前谢谢

应使用
ldap\u mod\u replace
仅更改单个属性类型的一个值或多个值。您应该使用在单个LDAP修改操作中更新多个属性类型


该手册可能有些混乱,因为
ldap\u mod\u replace
的一个参数使您相信可以使用此方法更改多个属性类型。并非如此。

这些是我为寻找可能的答案而复习的其他资源:我阅读的PHP文档是,
ldap\u mod\u replace
只能用于更改单个属性的值。您应该使用
ldap\u modify
在单个ldap修改操作中更新多个属性。这正是问题所在!我误读了ldap\u modify手册,认为它要求我查找条目,而不是简单地传递带有一些更新参数的DN。谢谢太好了,很高兴听到。我发布了一个答案来反映这一点。