`ldap_search` not working on debian 11 with PHP8.2 and ldap module compiled from source
Personne n'a encore pris cette issue.
- Langage dominant
- C
- Étoiles
- 40.4k
- Forks
- 8.2k
- Merge moyen
- 2 j 15 h
- PR mergées (30 j)
- 103
Description
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
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire l’échec de ldap_list dans le build Docker Debian 11 PHP 8.2, en utilisant les chemins ldap_connect, ldap_bind, ldap_read et ldap_get_entries décrits dans le rapport. Comparez le module compilé avec le module Ubuntu fonctionnel et avec ldapsearch en ligne de commande, puis documentez une différence confirmée de paquet ou de compilateur et vérifiez que la recherche LDAP renvoie des entrées.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- docker, php
- Domaine
- authentication, backend
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 35/100