durchsuchen Ich muss alle Einträge auf einer LDAP-Basis durchlaufen. Tatsächlich ist der LDAP-Server für jede Suche auf 500 Einträge beschränkt. Ich arbeite mit PHP 5.6.Mit PHP eine LDAP-Basis mit Seitenumbruch
fand ich die mögliche Lösung ldap_control_paged_result und ldap_control_paged_result_response und einfach implementiert ein einfaches Testskript:
(...)
498 - NAME SUPRESSED
499 - NAME SUPRESSED
500 - NAME SUPRESSED
WARNING: ldap_control_paged_result_response(): Result is: Size limit exceeded (4)
WARNING: ldap_control_paged_result_response(): Result is: Size limit exceeded (4)
WARNING: ldap_control_paged_result_response(): Result is: Size limit exceeded (4)
(...)
:
(...)
ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
$pageSize = 100;
$cookie = '';
$count = 0;
do {
ldap_control_paged_result($conn, $pageSize, true, $cookie);
$result = ldap_search($conn, 'ou=people,dc=ufsf,dc=br', 'uid=*', ['uid', 'name']);
$entries = ldap_get_entries($conn, $result);
foreach ($entries as $entry) {
$count++;
echo $count . ' - ' . $entry['name'][0] . PHP_EOL;
}
ldap_control_paged_result_response($conn, $result, $cookie);
} while($cookie !== null && $cookie != '');
Aber ich kann immer noch nicht abgerufen werden mehr als 500 Einträge, Dies wird der Ausgang
Fehle ich etwas?
Mögliches Duplikat von [Alle Benutzer in LDAP mit PHP auflisten] (http://stackoverflow.com/questions/1473075/enumerate-all-users-in-ldap-with-php) – rkosegi
Ist das 'ldap_set_option ($ conn , LDAP_OPT_PROTOCOL_VERSION, 3); 'Aufruf wirklich direkt vor der Suche? Wenn ja, muss das nach 'ldap_connect()', aber vor 'ldap_bind()' aufgerufen werden. Das könnte dies erklären, da das Paging eine LDAP v3-Funktion ist. Wenn die Protokollversion nicht an der richtigen Stelle eingestellt wird, wird sie möglicherweise nicht wirksam. – ChadSikorra
@rkosegi Das war eine ziemlich vollständige und irgendwie komplexe Lösung für etwas, das IMO viel einfacher sein könnte. Am Ende wurde das Problem gelöst, indem das Serverlimit erweitert wurde. Nicht die beste Lösung, aber es funktioniert (vorerst). – marcellorvalle