2011-10-21 14 views
6

Spędziłem większą część dnia do tej pory patrząc na ten problem. Z jakiegoś powodu nie mogę dla mojego życia dowiedzieć się, co jest nie tak z poniższym kodem. Jest to przycięta/zmodyfikowana wersja przykładu podana w Podręczniku PHP.Jak poprawnie używać ldap_search() w PHP?

Kiedy uruchomić poniższy kod, pojawia się komunikat o błędzie:

Warning: ldap_search() [function.ldap-search]: Search: Operations error in C:\wamp\www\ldap.php on line 12 

odpowiedni kod:

<?php 
$ds=ldap_connect("serverName.first.second.third.fourth"); 

ldap_set_option($ds, LDAP_OPT_REFERRALS, 0); 
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); 

    $r=ldap_bind($ds);  
    $sr=ldap_search($ds, "OU=InfoSystems,OU=Domain Users,DC=first,DC=second,DC=third,ED=fourth", "sn=MyActualSurName"); 
    ldap_close($ds); 
?> 

użyłem skryptu VBS, aby wydrukować bieżący zalogowany użytkownika (Me) pełny DN. Następnie podłączyłem odpowiednie pola OU i DC.

Każda pomoc zostanie bardzo doceniona. Jeśli potrzebujesz więcej wyjaśnień, nie wahaj się zapytać.

+0

Czy próbowałeś tego? http://us3.php.net/manual/en/function.ldap-search.php#45388 –

+0

Mam. To była pierwsza rzecz, którą natknąłem się na rozwiązanie. Używam tego i LDAP_OPT_PROTOCOL_VERSION, aby wymusić wersję 3, co było kolejnym rozwiązaniem, które najbardziej zgadza się na użyteczność. Próbowałem użyć jednego, a nie drugiego, bez żadnych zmian w wynikach. –

+0

Jakieś inne sugestie? Ostatnie kilka dni pracowałem nad nim i nic się nie pojawiło. –

Odpowiedz

6

W końcu znalazłem problem. Nasz serwer AD pozwala na anonimowe powiązanie, ale najwyraźniej nie pozwala na wyszukiwanie bez poświadczeń. Powyższy kod działa poprawnie po wywołaniu ldap_bind() z poświadczeniami.

Powiązane problemy