Mam problem z połączeniem ldap.Błąd operacji LDAP
$hostname="ldap://sub.domain.com";
$ds=ldap_connect($hostname, 389);
ldap_set_option ($ds, LDAP_OPT_REFERRALS, 0) or die('Unable to set LDAP opt referrals');
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3) or die('Unable to set LDAP protocol version');
if ($ds)
{
$dn = "OU=Users,OU=ro,DC=sub,DC=domain,DC=com";
if (!($ldapc=ldap_bind($ds))) {
echo "<p>Error:" . ldap_error($ds) . "</p>";
echo "<p>Error number:" . ldap_errno($ds) . "</p>";
echo "<p>Error:" . ldap_err2str(ldap_errno($ds)) . "</p>";
die;
}
$attributes = array("sn");
$filter = "(sn=*)";
$result = ldap_search($ds, $dn, $filter, $attributes);
echo $result;
$info = ldap_get_entries($ds, $result);
for ($i=0; $i < $info["count"]; $i++) {
echo $info[$i]["ou"][0];
}
} else {
echo "<h4>Unable to connect to LDAP server</h4>";
}
ldap_unbind($ds);
Ldap każde anonimowe połączenie działa, ponieważ testuję je w przeglądarce AD i wszystko jest w porządku. W tym kodzie zatrzyma się
ldap_search($ds, $dn, $filter, $attributes);
otrzymuję ostrzeżenie:
Ostrzeżenie: ldap_search(): Szukaj: Operacje w błędzie .. \ index.php on line 38
Naprawdę nie wiem, co może być przyczyną tego błędu, doceniam twoją pomoc.
Nie można się zgubić ze zmiennym zakresem? $ dn (baza dn dla wyszukiwania) jest zdefiniowany jeden poziom poniżej wywołania ldap_search. Spróbuj echo (var_dump) parametrów wyszukiwania ldap tuż przed wywołaniem wyszukiwania, aby upewnić się, że wszystko jest w porządku lub włączyć sprawdzanie isset ($ dn). Lub po prostu zdefiniuj $ dn bezwarunkowo. –
Parametry są w porządku, sprawdziłem je tuż przed wywołaniem wyszukiwania i to jest w porządku. Jeden problem, który moim zdaniem może być, jestem w intranecie, nie mam uprawnień administratora, więc nie mogę pisać w C. Skopiowałem archiwum xampp, nie zainstalowałem xampp na tym komputerze. Po pierwsze, nawet jeśli włączyłem rozszerzenie ldap z php.ini, to nie zadziałało, ponieważ nie mam jakiegoś pliku w C/windows/system. Kiedy je skopiowałem, wszystko działa, tak myślę. Czy instalacja może być problemem? –
A co z używaniem narzędzia powłoki do sprawdzenia lub Apache DirectoryStudio (GUI klienta LDAP)? Nie musisz być administratorem lokalnym, aby go zainstalować/używać, w systemie Windows lub Workastation, cokolwiek. Spróbuj połączyć się i zapytaj o serwer LDAP z jakimkolwiek innym narzędziem niż PHP. –