最近我遇到了同样的问题,发现this post。显然,密码修改被认为是管理密码重置,您必须指定AD以应用其规则的其他选项。
根据帖子,该控件必须在服务器上可用。这是目前在Windows Server 2008 R2的Service Pack 1,可以使用此修补程序安装在2008 R2:
$ctrl1 = array(
// LDAP_SERVER_POLICY_HINTS_OID for Windows 2012 and above
"oid" => "1.2.840.113556.1.4.2239",
"value" => sprintf("%c%c%c%c%c", 48, 3, 2, 1, 1));
$ctrl2 = array(
// LDAP_SERVER_POLICY_HINTS_DEPRECATED_OID for Windows 2008 R2 SP1 and above
"oid" => "1.2.840.113556.1.4.2066",
"value" => sprintf("%c%c%c%c%c", 48, 3, 2, 1, 1));
if (!ldap_set_option($ds, LDAP_OPT_SERVER_CONTROLS, array($ctrl1, $ctrl2))) {
error_log("ERROR: Failed to set server controls");
}
$result = ldap_mod_replace($ds, $dn, $entry);
非常感谢:http://support.microsoft.com/?id=2386717
然后你发布你的PHP代码的修改命令之前配置选项给作者bmaupin(找不到他/她的名字)。 我决定回答这个问题,因为我在寻找解决相同问题的解决方案时登陆了这里。
非常好的解释,谢谢! – 2012-08-10 15:04:18