Chce połączyć się z bazą LDAP na localhoscie pod Windowsem i wykonywać na niej kilka operacji.
Postawiłem serwer z przykładową bazą JXplorer łączy się z nią bez problemu jednak przy połączeniu przez PHP pojawia się problem przy bindowaniu.
Używam tego kodu do połączenia:
<?php /* Declaration of the global variables*/ $server_name="ldap://localhost"; $port="389"; $base_dn = "o=FIRMA,c=PL"; $rdn="o=FIRMA,c=PL"; $rps="secret"; /* Connect, bind, and search directory */ if($link_id) { if(ldap_bind($link_id)) { //anonymous bind $res = ldap_search($link_id, $base_dn, "IP=212*", $attribs); if($res) { } else { } } else { $e=ldap_errno($link_id); $ee=ldap_error($link_id); echo "<br /> <br /> ".$e."<br />"; } } else { } ?>
Przy wykonywaniu funkcji ldap_bind() zwraca mi taki błąd:
Connection successful
Warning: ldap_bind()" title="Zobacz w manualu PHP" target="_manual [function.ldap-bind]: Unable to bind to server: Protocol error in D:\wamp\www\ldap\1.php on line 14
2
Protocol error
Bind failed
nie wiem czy problem tkwi w pliku konfiguracyjnym OpenLDAP - slapd.conf czy w plikach konfiguracyjnych apacha, a może jeszcze gdzieś indziej.
Przeszukiwałem forum, ale nie znalazłem nic na temat tego błędu
Problem rozwiązany
trzeba było się połączyć przez wersje 3 protokołu
<?php if (ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) { } else { } ?>
jeszcze jedna uwaga, może sie komuś przydać; żeby serwer LDAP dopuszczał bindowanie na protokole w wersji 2 należy na początku pliku konfiguracyjnego slapd.conf dodać linijke z: allow bind_v2