php ldap_search 用于导致列出所有用户的子组

php ldap_search for sub groups resulting in all users listed

我正在做一个 php ldap_search,我正在寻找来自父组的任何子组。我从搜索结果中选择 dn 和 cn,然后显示子组

$search= ldap_search(cn=parent-group,cn=groups,dc=company,dc=net, "cn=*")
$info = ldap_get_entries($search);
                        
                        for ($i=0; $i<$info["count"]; $i++) {
                            $dn=$info[$i]["dn"];
                            $group_cn= $info[$i]["cn"][0];
                            array_push($group_array, "$group_cn : $dn"); 
foreach($group_array as $group){
echo $group;
}

这将导致如下输出:

group1 : cn=group1,cn=parent-group,cn=groups,dc=company,dc=net
group2 : cn=group2,cn=parent-group,cn=groups,dc=company,dc=net

这给了我正在寻找的子组,我的问题是搜索也在为用户 (uniqueMembers) 获取结果,当其中一个子组非常大时,搜索需要很长时间。

我尝试将搜索过滤器更改为“dn:”和“cn=groups”,但这两个选项似乎都不是有效的过滤器。

我还能如何更改我的搜索,使其不在输出中列出 uniqueMembers。

您可以设置过滤器,以便搜索 returns 仅分组条目,并且也仅请求必要的属性:

$filter = 'objectClass=groupOfUniqueNames';
$attr = ['dn', 'cn'];

$search = ldap_search($base, $filter, $attr);