LDAP扩展已加载需在phpinfo()中搜索到“LDAP Support enabled”及配置项;命令行用php -m | grep ldap验证,注意CLI与Web配置独立;连接失败则排查OpenLDAP版本、SELinux限制或TLS证书问题。
直接看 phpinfo() 输出页,按 Ctrl+F 搜索 ldap。如果页面中出现「LDAP Support」为 enabled,且下方列出 ldap.max_links、ldap.max_batch_size 等配置项,说明扩展已成功加载。
常见误判点:只看到 exten 出现在 
Loaded Configuration File 对应的 php.ini 里,不代表它真生效了——可能被注释、路径错误、或依赖库缺失导致静默失败。
Web 服务器(如 Apache/Nginx)和 CLI 的 PHP 配置常不一致,php -m | grep ldap 是最干净的验证方式:
php -m | grep ldap
若输出 ldap,说明 CLI 环境下扩展就绪;若无输出,运行:
php -i | grep -A5 -B5 "ldap"
查看是否有报错线索,比如 Unable to load dynamic library 'ldap' —— 这通常指向 .so(Linux/macOS)或 .dll(Windows)文件缺失或依赖未满足。
ldd /path/to/ldap.so(Linux)可查 C 库依赖是否完整,重点关注 libldap.so 和 libsasl2.so
libeay32.dll、ssleay32.dll(旧版)或 libcrypto-1_1-x64.dll(新版)在系统 PATH 中不是改完 php.ini 就万事大吉。以下位置必须全部核对:
php.ini 文件路径:用 php --ini 查真正生效的配置文件,别只改了备用的 php.ini-development
extension=ldap 行不能带分号,也不能写成 extension=php_ldap.dll(Windows 下新版 PHP 已统一为 ldap)LoadModule php_module 后是否重启了 httpd;PHP-FPM 用户需 sudo systemctl reload php*-fpm
一个典型陷阱:phpinfo() 显示的 Loaded Configuration File 是 /etc/php/8.2/apache2/php.ini,但你改的是 /etc/php/8.2/cli/php.ini —— 两者完全独立。
即使 phpinfo() 显示 LDAP enabled,调用 ldap_connect() 仍可能返回 false 或触发警告 Unable to initialize LDAP context。这不是扩展没加载,而是运行时依赖异常:
libldap 2.4.23 及以前)可能无法连接 TLS 1.2+ 的 LDAP 服务器ldap.conf 中的 TLS_REQCERT 设为 hard 但证书链不完整,会导致连接被静默拒绝此时 ldap_error($conn) 返回空,得靠 strace -e trace=connect,openat php test.php 观察底层系统调用是否卡在 DNS 解析或 connect 阶段。
真正麻烦的永远不是“有没有加载”,而是“能不能连上”——前者看配置,后者得查网络、证书、权限、协议兼容性。