我正在寻找在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():添加:对象类违规......
先谢谢你的帮助。
答案 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
我希望这会对您有所帮助:)