`ldap_search` not working on debian 11 with PHP8.2 and ldap module compiled from source
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- C
- Sterne
- 40.4k
- Forks
- 8.1k
- Ø Merge
- 2 T. 13 Std.
- Gemergte PRs (30 T.)
- 96
Beschreibung
Description
The following code:
Hey, I use a self compiled php8.2-ldap extension in an php8.2 setup (Default PHP8.2 container from docker php 8.2.28-cli-bullseye) .
The following code always return the ldap error Operations error (ldap_error-code 1)
<?php
$ldap_host = "myhost";
$ldap_dn = "DC=host,DC=site";
$ldap_username = <user>;
$ldap_password = <pw>;
$options = [
'host' => $ldap_host,
'dn' => $ldap_dn,
'username' => $ldap_username,
'password' => $ldap_password,
];
$ldapconn = ldap_connect($options['host']);
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
@ldap_bind($ldapconn, $options['user'], $options['password']);
$filter = "(objectClass=*)";
@$search = ldap_list($ldapconn, $dn, $filter);
if (!$search) {
var_dump([
'$search' => $search,
'error' => 'LDAP search failed',
'ldap_error' => ldap_error($ldapconn),
'ldap_errno' => ldap_errno($ldapconn),
'base_dn' => $dn,
'filter' => $filter
]);
}
ldap_unbind($ldapconn);
?>
ldap_connect and ldap_bind are working fine. It is also possible to get the base dn using the following codeblock:
$read = ldap_read($ldapconn, '', 'objectClass=*', ['defaultNamingContext'], 0);
$data = ldap_get_entries($ldapconn, $read);
$dn = $data[0]['defaultnamingcontext'][0] ?? null;
That means ldap_read and ldap_get_entriesare working.
If I use the same code from above on ubuntu using pre-compiled php8.2-ldap.so module from ubuntu repository, the code runs fine without any errors. So I can be sure, that the the credentials from $options are correct. Also an ldapsearch from command line with the same credentials and filters returns valid results.
I compile the php8.2-ldap module during docker-build phase using that code:
RUN apt-get update && apt-get -y install pkg-config [...] ldap-utils libldap-common libldap2-dev\
[...]
&& docker-php-ext-configure ldap --with-libdir=/lib/x86_64-linux-gnu/ \
&& docker-php-ext-install ldap \
[...]
Resulted in this output:
`Operations error` (ldap_error-code 1)
But I expected this output instead:
I expected a list of LDAP entries
Any idea, what's goinig on here? Did a miss a compiler-option or an package?
PHP Version
PHP 8.2.4 (cli) (built: Mar 16 2023 21:25:47) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.4, Copyright (c) Zend Technologies
with Zend OPcache v8.2.4, Copyright (c), by Zend Technologies
Operating System
Debian 11
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, den ldap_list-Fehler im Debian-11-PHP-8.2-Docker-Build zu reproduzieren, und verwende dabei die im Bericht beschriebenen Pfade über ldap_connect, ldap_bind, ldap_read und ldap_get_entries. Vergleiche das kompilierten Modul mit dem funktionierenden Ubuntu-Modul und dem ldapsearch-Kommandozeilenprogramm. Dokumentiere anschließend einen bestätigten Paket- oder Compilerunterschied und überprüfe, dass die LDAP-Suche Einträge zurückgibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- docker, php
- Bereich
- authentication, backend
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 35/100