Witam
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:
  1. <?php
  2. /* Declaration of the global variables*/
  3. $server_name="ldap://localhost";
  4. $port="389";
  5. $base_dn = "o=FIRMA,c=PL";
  6. $attribs= array("IP","TM");
  7. $rdn="o=FIRMA,c=PL";
  8. $rps="secret";
  9.  
  10. /* Connect, bind, and search directory */
  11. $link_id = ldap_connect($server_name, $port) or die("Could not connect to {$ldaphost}");
  12. if($link_id) {
  13. echo "Connection successful";
  14. if(ldap_bind($link_id)) { //anonymous bind
  15. echo "Bind successful";
  16. $res = ldap_search($link_id,
  17.  $base_dn,
  18.  "IP=212*",
  19.  $attribs);
  20. if($res) {
  21.  echo "Search successful ";
  22.  } else {
  23.  echo "Search failed";
  24.  }
  25.  } else {
  26.  $e=ldap_errno($link_id);
  27.  $ee=ldap_error($link_id);
  28. echo "<br />
  29. <br />
  30. ".$e."<br />";
  31. echo $ee."<br />" ;
  32.  echo "Bind failed";
  33.  }
  34. } else {
  35.  echo " Connection failed";
  36. }
  37. ?>


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

  1. <?php
  2. if (ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) {
  3. echo "<br />Using LDAPv3<br />";
  4. } else {
  5. echo "<br />Failed to set protocol version to 3<br />";
  6. }
  7. ?>


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