php - ldap修改: invalid format (line 5) entry: "... " on LDIF (passed from PHP)

标签 php ldap ldif

我正在尝试编写一些代码,允许用户通过 PHP 网络界面更改他们过期的 Active Directory 密码。由于 PHP 的 ldap 库* 的限制,似乎唯一的方法是生成一个 ldif,然后将其直接传递给 ldapmodify。

我想出的代码(减去变量)是:

ldapmodify -H {$ad_server} -D '{$dn}' -w {$old} <<!
dn: {$dn}
changetype: modify
delete: unicodePwd
unicodePwd:: {$oldPassword}
-
add: unicodePwd
unicodePwd:: {$newPassword}
-
!

当我将生成的代码直接粘贴到我的控制台时,代码似乎工作正常,但到目前为止,我还没有从 PHP 运行它。

我最初尝试将代码传递给 exec,结果却得到了 exitcode 247(这似乎不是真的)

然后我尝试改用 proc_open,它提供了当前错误

ldapmodify: invalid format (line 5) entry: " ... "

据我所知,第 5 行的唯一内容是“-”。所以我对可能出了什么问题有点困惑。

附言我也看了这篇文章 LDIF file error?? Invalid Format?它报告了一个类似的问题,虽然假设“-”字符的编码是问题所在,但我不确定我能用 PHP 真正用它做什么(mb_string_encoding 整个字符串到 utf-8 似乎没有任何影响)

这也在 solaris 机器上运行,这也可能是一个因素。

*PHP 无法在单个命令中执行两个操作,这是在 AD 中更改用户密码所必需的。 (据我所知)

编辑:不知道为什么这会得到反对票,但我很高兴有人告诉我我是个白痴,如果我在做一些明显愚蠢的事情而不注意(只要你指出那是什么,就像我一样)已经坚持了一段时间)

最佳答案

多亏了 freenode 上的#ldap channel 的一些帮助,事实证明我确实是个白痴(特别是考虑到我一天中的大部分时间都在戳戳这个问题)。

当 LDIF 在“-”之后包含 Windows 换行符时,ldapmodify 似乎不喜欢它在 sublime 中将行尾从 Windows 切换到 unix 已经解决了我的问题*。

关于php - ldap修改: invalid format (line 5) entry: "... " on LDIF (passed from PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18987591/

相关文章:

ldap - 应用 LDIF - OpenLDAP 时出现错误 50(访问权限不足)

javascript - 用php和javascript上传图片?

php - 来自 SQL 的 Laravel Eloquent ORM 聚合函数

python - 如何使用 Python 更改域用户(windows Active Directory)的密码?

c# - 为 LDAP 查询转义字符串中的非特殊字符

authentication - 如何离线使用LDAP凭证?

java - 如何在LDIF文件中添加属性?

php - UTF8 读取波斯字符串为 ?在 MySQL 5.0 中

php - JavaScript 中的 AES 匹配 PHP 的 mcrypt

java - Spring 项目使用 CAS 进行身份验证,使用 LDAP 进行权限管理