ldap_add() - >对象类违规

时间:2017-05-24 09:05:21

标签: php ldap

我正在寻找在PHP中的LDAP服务器中添加一些数据值。使用php的LDAP对我来说是新的。 我在互联网上的问题没有找到很多答案,我找到的并没有真正回答我的问题。

Here is my code :
$entry["cn"] = $_POST["name"];
$entry["sn"] = $_POST["name"];
$entry["objectclass"] = "person";

$ans = ldap_add($LDAP_LINK, $dn, $entry);

我的$ LDAP_LINK和$ dn变量是正确的,因为我已经完成了显示模块。 (所以,我已经连接,我已经列出了我需要的所有条目)。我确定这两个变量。 当我启动我的代码时,$ ans变为false并且我有这个php错误:警告:ldap_add():添加:对象类违规......

先谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您只能添加允许的属性。 objectClass是抽象对象类top的属性类型,因此您应该将top添加到条目的对象类列表中:

$entry["objectClass"][0] = "top";
$entry["objectClass"][1] = "person";

大多数LDAP服务器不允许您选择像person这样的派生结构类。始终明确添加所有超类以使其安全。

答案 1 :(得分:0)

如果您查找有用的错误消息,则可以(必须?)激活ldap服务器的日志记录。

我在Ubuntu系统上使用OpenLDAP。您可以在https://help.ubuntu.com/lts/serverguide/openldap-server.html.de#openldap-server-logging处找到文档。这是我对服务器的日志记录配置(文件:logging.ldif):

dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats

您可以使用以下方法在OpenLDAP中激活它:

ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f logging.ldif

重试您的函数调用,现在您可以在日志文件中看到错误,即tail -f / var / log / syslog

slapd[20568]: conn=1049 op=2 ADD dn="uid=10002,cn=xyz,ou=person,dc=example,dc=org"
slapd[20568]: Entry (uid=10002,cn=xyz,ou=person,dc=example,dc=org): object class 'posixAccount' requires attribute 'uidNumber'
slapd[20568]: conn=1049 op=3 UNBIND

我希望这会对您有所帮助:)