LDAP扩展已加载需在phpinfo()中搜索到“LDAP Support enabled”及配置项;命令行用php -m | grep ldap验证,注意CLI与Web配置独立;连接失败则排查OpenLDAP版本、SELinux限制或TLS证书问题。

phpinfo() 页面里怎么快速确认 LDAP 扩展已加载
直接看 phpinfo() 输出页,按 Ctrl+F 搜索 ldap。如果页面中出现「LDAP Support」为 enabled,且下方列出 ldap.max_links、ldap.max_batch_size 等配置项,说明扩展已成功加载。
常见误判点:只看到 extension=ldap 出现在 Loaded Configuration File 对应的 php.ini 里,不代表它真生效了——可能被注释、路径错误、或依赖库缺失导致静默失败。
命令行下验证 ldap 扩展是否可用(绕过 Web 环境干扰)
Web 服务器(如 Apache/Nginx)和 CLI 的 PHP 配置常不一致,php -m | grep ldap 是最干净的验证方式:
php -m | grep ldap
若输出 ldap,说明 CLI 环境下扩展就绪;若无输出,运行:
立即学习“PHP免费学习笔记(深入)”;
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 - Windows 下需确认
libeay32.dll、ssleay32.dll(旧版)或libcrypto-1_1-x64.dll(新版)在系统 PATH 中
phpinfo() 不显示 LDAP?重点检查这三处
不是改完 php.ini 就万事大吉。以下位置必须全部核对:
-
php.ini文件路径:用php --ini查真正生效的配置文件,别只改了备用的php.ini-development -
extension=ldap行不能带分号,也不能写成extension=php_ldap.dll(Windows 下新版 PHP 已统一为ldap) - Apache 用户还要确认
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 —— 两者完全独立。
扩展加载成功但 ldap_connect() 报错?可能是初始化失败
即使 phpinfo() 显示 LDAP enabled,调用 ldap_connect() 仍可能返回 false 或触发警告 Unable to initialize LDAP context。这不是扩展没加载,而是运行时依赖异常:
- OpenLDAP 客户端库版本太老(如
libldap 2.4.23及以前)可能无法连接 TLS 1.2+ 的 LDAP 服务器 - SELinux 或 AppArmor 限制了 PHP 进程的网络连接能力(尤其容器或加固系统)
-
ldap.conf中的TLS_REQCERT设为hard但证书链不完整,会导致连接被静默拒绝
此时 ldap_error($conn) 返回空,得靠 strace -e trace=connect,openat php test.php 观察底层系统调用是否卡在 DNS 解析或 connect 阶段。
真正麻烦的永远不是“有没有加载”,而是“能不能连上”——前者看配置,后者得查网络、证书、权限、协议兼容性。











