我試圖編寫一些代碼,允許用戶通過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。我今天陷入了同樣的事情。 –