Category
stdlib · php-src-strict
Problem
ldap_bind() / ldap_unbind() are present, but ldap_bind_ext() (returns LDAP\Result|false and accepts $controls) is missing. ldap_sasl_bind() is also absent (separate follow-up OK). EXOP helpers (ldap_exop_*) already landed via prior work.
| API |
Zend / php-src |
VM (2026-07-22) |
ldap_bind / ldap_unbind |
present |
present |
ldap_bind_ext |
present |
missing |
ldap_sasl_bind |
present |
missing |
php-src reference
PHP implementation target
ext/ldap/ — register ldap_bind_ext beside ldap_bind; implement in VmLdapCore / link builtins (PHP)
- Return
LDAP\Result on success like Zend; honor $controls when the native bridge already supports controls for search/mod
- PHP-in-PHP; reuse existing LDAP connection/result objects
Repro
./script/docker-exec.sh -- bash -lc 'php bin/vm.php test/repro/maintainer_gap_ldap_bind_ext_missing.php'
Done when
Category
stdlib· php-src-strictProblem
ldap_bind()/ldap_unbind()are present, butldap_bind_ext()(returnsLDAP\Result|falseand accepts$controls) is missing.ldap_sasl_bind()is also absent (separate follow-up OK). EXOP helpers (ldap_exop_*) already landed via prior work.ldap_bind/ldap_unbindldap_bind_extldap_sasl_bindphp-src reference
ext/ldap/ldap.stub.php—ldap_bind_ext(LDAP\Connection $ldap, ?string $dn = null, ?string $password = null, ?array $controls = null): LDAP\Result|falseext/ldap/ldap.c— extended bind + controlsPHP implementation target
ext/ldap/— registerldap_bind_extbesideldap_bind; implement inVmLdapCore/ link builtins (PHP)LDAP\Resulton success like Zend; honor$controlswhen the native bridge already supports controls for search/modRepro
./script/docker-exec.sh -- bash -lc 'php bin/vm.php test/repro/maintainer_gap_ldap_bind_ext_missing.php'Done when
function_exists('ldap_bind_ext')trueLDAP\Resulton success /falseon failure matching Zend.phptguard