使用 ldap_bind() 后,OpenDJ 中描述的属性的输出格式会发生变化。
没有 ldap_bind 的示例:
$ldap_port = 389;
$ldap_host = "ldap-host";
$ldap_bdn = "ou=People,dc=example,dc=com";
$ldap_attr = array("dn","groupname");
$ldap_filter = "(cn=example-cn)";
$ldap_group = "ou=Groups,dc=example,dc=com";
if(!($ldap_conn = ldap_connect($ldap_host,$ldap_port))) {
die("could not connect to ldap");
}
if(!$ldap_res = ldap_search($ldap_conn,$ldap_group,$ldap_filter,$ldap_attr)) {
die("ldap_search");
}
$res = ldap_search($ldap_conn, $ldap_group, "(cn=example-cn)", array("groupname"));
$entry = ldap_first_entry($ldap_conn, $res);
while($entry)
{
$info = ldap_get_attributes($ldap_conn, $entry);
var_dump($info);
$entry = ldap_next_entry($ldap_conn, $entry);
}
结果:
array (size=5)
'groupname;lang-en' =>
array (size=2)
'count' => int 1
0 => string 'Computing and Data Centre' (length=25)
0 => string 'groupname;lang-en' (length=20)
'groupname;lang-de' =>
array (size=2)
'count' => int 1
0 => string 'Rechenzentrum und Datenbanken' (length=29)
1 => string 'groupname;lang-de' (length=20)
'count' => int 2
如果我使用 PHP 的 ldap_bind() 函数
if(!ldap_bind($ldap_conn, "uid=exampleuser,ou=Special Users,dc=com", "password")) {
die("could not bind to ldap");
}
所描述属性的输出格式更改为:
array (size=3)
'GroupName' =>
array (size=3)
'count' => int 2
0 => string 'Computing and Data Centre' (length=25)
1 => string 'Rechenzentrum und Datenbanken' (length=29)
0 => string 'GroupName' (length=12)
'count' => int 1
为什么我会为相同的请求获得不同的格式?是 OpenDJ 配置错误,还是我使用了错误的功能?