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 で変更要求が表示され、ldap サーバーからの変更応答が成功しましたが、新しい PHP バージョンの変更要求では、userPassword の値が空になっています。属性。(古いバージョンは完全に機能し、アイテムの期待値を示しています)。
ldap_modify と ldap_mod_replace を試しました。私も同じ結果でした。
アンドレス、どうもありがとうございました。
PS: コードは常に「印刷成功」のブランチを選択することを明確にする必要があります。また、$pass が正しい値であることも確認しました。