Skip to content

Stdlib: ldap_connect_wallet() missing when ldap advertised — VM impl present, wallet gate never enables (re-#20638, ext/ldap/ldap.c) #28087

Description

@PurHur

Category

stdlib · php-src-strict · ext/ldap Oracle wallet · pillar 4

Problem

Closed as implemented in #20638, but with ldap advertised (PHP_COMPILER_ENABLE_LDAP=1, extension_loaded('ldap') === true), ldap_connect_wallet() is still absent from the function table. Implementation exists at ext/ldap/ldap_connect_wallet.php and Module.php adds it only when LdapExtensionPolicy::advertisesWalletConnect() — which requires VmLdapNative::walletAvailable() and is false in the pinned dev container.

Repro Zend 8.3+ (ldap + Oracle wallet build) VM (2026-08-06)
extension_loaded('ldap') true true
function_exists('ldap_exop_sync') true true
function_exists('ldap_connect_wallet') true false

php-src reference

PHP implementation target

  • ext/ldap/LdapExtensionPolicy.phpadvertisesWalletConnect() + GSLC_SSL_* constants when wallet libs reachable (match php-src HAVE_ORALDAP gate, not phantom on default profile)
  • ext/ldap/ldap_connect_wallet.php — VM execute path already present; add JIT lowering (currently throws #20638)
  • ext/ldap/Module.php — register wallet fn + constants with the policy gate

Repro

./script/docker-exec.sh -- bash -lc \
  'PHP_COMPILER_ENABLE_LDAP=1 PHP_COMPILER_PROFILE=8.4 php bin/vm.php test/repro/maintainer_gap_ldap_connect_wallet_missing.php'
# expect: wallet_fn=1 when Oracle wallet LDAP is available
# actual (no wallet libs): wallet_fn=0 while ext/ldap loaded

Done when

  • When ldap is advertised and wallet connect is available, ldap_connect_wallet() + GSLC_SSL_* constants match Zend
  • When wallet libs absent, function stays absent (E_USER_WARNING stub path on direct call is ok for dev boxes without Oracle)
  • JIT/AOT lowering for wallet connect (or documented VM-only with compliance skip reason)
  • php-src-strict; no php-compiler-strict shortcut

Gate snapshot when filing (2026-08-06)

  • inventory OK 7119/7119; user_release_ready: yes

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:vmVirtual machineenhancementNew feature or requestimplementation-readySpec complete: repro, php-src ref, done-when — safe for workers to claimphase-4:stdlibPhase 4 – stdlib for web appsstdlib

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions