@kirigami/phpext-ldap
ldap_*() for Kirigami PHP.wasm — as a standalone, on-demand WASM side module.
Built for the Kirigami static site generator's PHP runtime, @kirigami/php-wasm.
Overview
@kirigami/phpext-ldap is PHP's own ext/ldap — unmodified upstream
source, straight from the PHP-8.5.11 tag — compiled independently of the
core php.wasm into a JSPI WASM side module (Kirigami's mode: shared
extension model). Install it and @kirigami/php-wasm picks it up
automatically at startup — no manual wiring, no core rebuild.
- Real
ext/ldap:ldap_connect,ldap_bind,ldap_search, the full documented PHP API — not a reimplementation - Linked against vendored, Emscripten-cross-compiled OpenLDAP client
libraries 2.7.1 (
libldap/liblber) — client-only, no standaloneslapdserver built - No Cyrus SASL, no TLS support yet in this build (both optional on the
ext/ldapside too — plain LDAP bind/search work fully) - JSPI only, Node.js only — matches
@kirigami/php-wasm's own target
Built by php-wasm-compiler,
which also documents the full build pipeline and architecture decisions.
Part of the Kirigami project ecosystem.
Table of contents
Requirements
- Node.js
>= 24.0.0 @kirigami/php-wasm(peer — this package has nothing to load it into on its own)
Installation
npm install @kirigami/phpext-ldap
That's it — @kirigami/php-wasm scans its own dependencies for
@kirigami/phpext-* packages at startup and loads whatever it finds.
Usage
No JS-side API of its own — once installed, the extension is just there in PHP:
<?php
$conn = ldap_connect('ldap.example.com');
ldap_bind($conn, 'cn=admin,dc=example,dc=com', 'password');
$result = ldap_search($conn, 'dc=example,dc=com', '(objectClass=*)');
Extension details
| PHP extension | ext/ldap, unmodified, from the PHP-8.5.11 tag |
| PHP version(s) shipped | 8.5 |
| Native library | OpenLDAP 2.7.1 (client libraries only) |
| Build mode | mode: shared (JSPI side module) — see @kirigami/php-wasm's mode: static core for the always-on extension set instead |
| Patches | None — ext/ldap's own PHP-facing API needed no changes |
| Build options | No SASL (--without-cyrus-sasl), no TLS (--without-tls) in the vendored OpenLDAP build yet |
Contents
*.so— one JSPI side module per PHP version listed above.manifest.json— extension metadata (name, per-version artifact paths, ini/env directives) consumed by@php-wasm/universal'sresolvePHPExtension().index.js(+index.d.ts) — default-exportsregister(phpVersion), resolving this package's artifact ready to feed into@php-wasm/universal'swithResolvedPHPExtensions(). This is what@kirigami/php-wasm's auto-loader calls — install the package and it's picked up automatically.package.json'skirigamifield —{ type: "extension", phpVersions, minVersion, vendorLib: { name, version }, buildHash }, mirroring the samekirigamimetadata convention every@kirigami/plugin-<name>package carries.minVersionis the exact PHP patch version this build was compiled/tested against (not a@kirigami/php-wasmsemver).
Compiled by php-wasm-compiler's
compile/cli.mjs compile-extension — see that repo's CLAUDE.md for the
full build/versioning story.
License
GPL-2.0-or-later, the license of php-wasm-compiler's build pipeline, which comes from WordPress Playground (see its NOTICE.md). The extension's own source, php-src's ext/ldap, is under the PHP License 3.01.
Author
Maxime Larrivée-Roy, 2026