PHP LDAP Overcoming Size Limit

2019-09-06 06:14发布

I have a very old network box, that has PHP4 and a variation of LDAP installed on it.

Querying information isn't normally an issue when the returned results are small, but I'm trying to get all entries in one specific CN

This results in 'Warning: ldap_search() [function.ldap-search]: Partial search results returned: Sizelimit exceeded'

All the suggestions I've read have been for PHP5+ and Active directory, nothing for something this OLD.

I'm hoping you can help.

This is my very simple ldap query. $r is the connection.

$result = ldap_search($r, "cn=location", "(cn=*)");
$entry = ldap_first_entry($r, $result);

do {
    $dn = ldap_get_dn($r, $entry);
    echo "DN is $dn\n";
} 
while ($entry = ldap_next_entry($r, $entry)); 

ldap_close($r);

This works until I hit the limit. I have tried changing the limit using LDAP_OPT_SIZELIMIT but obviously that didn't help.

What I'm wondering is.. is there any way to count the entries and then process them in smaller more manageable batches using something like :

$sr=ldap_list($r, "cn=location","cn>=".$last_location);

Is that possible ? any other ideas ?

Thanks

标签: php ldap
1条回答
▲ chillily
2楼-- · 2019-09-06 07:09

According to php.net/manual/...ldap-search, you should set the $sizelimit parameter to 0 to disable the memory limit. It will not, however, override the LDAP server configuration, if that is the cause of the error.

The function call will look something like the following:

ldap_search($r, "cn=location", "(cn=*)", null, 0, 0);

I'm not clear on how the filter parameter works, so you may need to change it if you get an error there. See the above link for descriptions on all of the parameters for ldap_search().

查看更多
登录 后发表回答