2013-09-24 12 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

考慮接受你自己的答案。就我個人而言,我認爲這不是一種糟糕的形式。 –

相關問題