[php-src] Issue #18832: `ldap_search` not working on debian 11 with PHP8.2 and ldap module compiled from source

From: Date: Wed, 11 Jun 2025 10:21:57 +0000
Subject: [php-src] Issue #18832: `ldap_search` not working on debian 11 with PHP8.2 and ldap module compiled from source
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-250240@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/18832 Author: B0rner ### 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 <?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: ```php $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 ```plain 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

« previous php.bugs (#250240) next »