我用 PHP 写了一个软件来重置用户的密码。它在我运行 PHP 5.1.4 版本的旧 Apache 服务器中运行良好(我不确定,但我相信它具有 openldap 版本 2.2.13.6)。现在我将相同的软件移植到更新版本的 Apache(实际上是 Weblogic 10.3.6)。
在这个新环境中,我安装了 PHP 5.3.27 和 openldap 2.4.30(根据 phpinfo)。
更改密码的代码片段是这样的:
$modifyPass["userPassword"]=$pass;
if (ldap_mod_replace($ds,$dn,$modifyPass))
{print "success";}
else {print "Fail";}
我在两个版本的 PHP 中运行代码时运行了网络嗅探器,在这两种情况下,您都可以在 wiershark 中看到 modifyrequest,以及来自 ldap 服务器的成功修改响应,但是较新 PHP 版本的 modifyrequest 的 userPassword 值为空属性。(旧版本完美运行,它显示了该项目的预期值)。
我尝试使用 ldap_modify 和 ldap_mod_replace。我有同样的结果。
任何帮助,将不胜感激,非常感谢,安德烈斯
PS:我应该澄清一下代码总是选择“打印成功”的分支,并且我确保 $pass 具有正确的值。