2013-09-24 13 views
1

我试图编写一些代码,允许用户通过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,但我会很高兴被告知我是一个白痴,如果我做一些明显愚蠢的不注意(这么长正如你指出那是什么,因为我一直坚持这一段时间现在)

+0

我怀疑行结局,但可能不保证downvote。我今天陷入了同样的事情。 –

回答

4

感谢来自freenode #ldap频道的一些帮助,事实证明我确实是一个白痴(特别是考虑到我'一直在大部分时间都在撬动和刺激)。

看起来ldapmodify不喜欢它,当一个LDIF在“ - ”之后包含一个windows新行字符切换行结束从Windows到崇高unix已经解决了我*的问题。

+2

考虑接受你自己的答案。就我个人而言,我认为这不是一种糟糕的形式。 –

相关问题