我试图编写一些代码,允许用户通过PHP网页更改过期的Active Directory密码接口。由于PHP的ldap库*的限制,似乎唯一的方法是生成一个ldif,然后直接将它传递给ldapmodify。ldapmodify:无效的格式(第5行)条目:LDIF上的“...”(从PHP传递)
的代码中,我想出了(减去增值经销商)是:
ldapmodify -H {$ad_server} -D '{$dn}' -w {$old} <<!
dn: {$dn}
changetype: modify
delete: unicodePwd
unicodePwd:: {$oldPassword}
-
add: unicodePwd
unicodePwd:: {$newPassword}
-
!
的代码出现,当我生成的代码粘贴直到我的控制台做工精细,但到目前为止,我已经没有运气从PHP运行它。
我本来试图将代码传送到exec
,只拿到退出码247(这并不似乎是一个真实的东西)
然后我试图使用proc_open
代替,其提供的电流误差
ldapmodify: invalid format (line 5) entry: " ... "
据我所见,第5行唯一的东西是“ - ”。所以我有点卡住了,可能是错的。
P.S.我也看过这篇文章LDIF file error?? Invalid Format?,它报告了类似的问题,尽管假设“ - ”字符的编码是问题,但我不确定我能用PHP实现它(mb_string_encoding整个字符串转换为utf-8似乎没有任何效果)
这也是在solaris机器上运行,这也可能是一个因素。
* PHP无法在单个命令中执行两个操作,这是在AD中执行用户密码更改所需的操作。 (据我所知)
编辑:不知道为什么这是得到downvotes,但我会很高兴被告知我是一个白痴,如果我做一些明显愚蠢的不注意(这么长正如你指出那是什么,因为我一直坚持这一段时间现在)
我怀疑行结局,但可能不保证downvote。我今天陷入了同样的事情。 –