You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ldap_add()函数报错Unknown attribute in the data问题求助

解决ldap_add()报错“Unknown attribute in the data”的问题

问题根源分析

你遇到的错误是因为AD(Active Directory)不识别传入的部分属性,或属性对应的对象类未正确声明,具体问题点如下:

  • objectClass设置不完整:仅指定person对象类不足以支持AD用户的核心属性(如samaccountname),AD创建用户需要包含top、person、organizationalPerson、user这一系列对象类,这类层级关系才能让用户属性生效。
  • 冗余的name属性:AD中的name属性默认对应对象的RDN(即你DN中的CN=$cn),不需要单独在属性数组中设置,手动添加该属性会导致AD无法识别。

修改后的代码示例

<?php
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
// 管理员身份绑定
$r = ldap_bind($ldap_connection, $ldap_username, $ldap_password);

// 准备用户数据
$cn = "$nom $prenom";
$info["cn"] = $cn;
$info["sn"] = $nom;
$info["givenname"] = $prenom;
$info["displayname"] = "$prenom $nom";
$info["samaccountname"] = "$prenom.$nom";
// 补充完整的对象类,支持AD用户属性
$info["objectclass"] = ["top", "person", "organizationalPerson", "user"];
// 可选:设置用户状态为启用(512=正常启用,514=禁用)
$info["useraccountcontrol"] = "512";

// 执行添加操作(确保$dn是正确的AD容器/OU,比如"OU=Users,DC=example,DC=com")
$r = ldap_add($ldap_connection, "CN=$cn,$dn", $info);

// 关闭连接
ldap_close($ldap_connection);

echo "L'enregistrement a réussi !!!";
?>

额外验证步骤

  • 确认$dn变量的值是AD中合法的容器或组织单元(比如OU=Users,DC=yourdomain,DC=com),否则会出现DN格式错误。
  • 检查绑定的管理员账号是否拥有创建用户的权限,权限不足也可能导致隐性错误。
  • 如果仍报错,可以逐个移除属性测试,定位到底是哪个属性触发了错误。

内容的提问来源于stack exchange,提问作者Antoine Blanquet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 09:33:16