我用PHP编写了一个软件,重置了用户的密码。它在我的旧Apache服务器运行PHP 5.1.4版本中运行良好(我不确定,但我相信它有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具有正确的值。