phpinfo输出含LDAP模块吗_查ldap扩展加载情况法【检视】

8次阅读

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

phpinfo输出含LDAP模块吗_查ldap扩展加载情况法【检视】

phpinfo() 页面里怎么快速确认 LDAP 扩展已加载

直接看 phpinfo() 输出页,按 Ctrl+F 搜索 ldap。如果页面中出现「LDAP Support」为 enabled,且下方列出 ldap.max_linksldap.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)或 .dllwindows)文件缺失或依赖未满足。

  • ldd /path/to/ldap.so(Linux)可查 C 库依赖是否完整,重点关注 libldap.solibsasl2.so
  • windows 下需确认 libeay32.dllssleay32.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 阶段。

真正麻烦的永远不是“有没有加载”,而是“能不能连上”——前者看配置,后者得查网络、证书、权限、协议兼容性。

text=ZqhQzanResources