LDAP 命令在未启用 ldap_mod 的情况下仍然有效

LDAP commands are still working without ldap_mod enabled

当我尝试使用 LDAP 凭据登录时,我的(开发)站点一直挂起。使用 xdebug,我能够将挂起精确定位到特定代码行,即对 ldap_bind(...) 的调用。经过几天的尝试理解它挂起的原因后,我的调试技术之一是禁用 mod_ldap,然后尝试让任何错误显示在 apache 日志中(在这开始之后,apache 错误日志没有'执行此 http 请求时未记录任何错误;它也是 'hangs')。

我做了什么

我禁用了该模块(sudo a2dismod mod_ldap),重新启动了服务器(sudo service apache2 restart),并确认该模块未启用(apache2ctl -M不显示mod_ldap)

问题

它在到达 ldap_bind() 时仍然挂起,但是,它甚至不应该到达那个点,因为没有 mod_ldap,我的代码甚至不应该成功调用 ldap_connect() (对吗?)返回 (resource) resource id='5' type='ldap link'(表示调用成功)。我期待 NoMethod 或 Function 错误。

为什么 php 可以调用未启用的模块,我该如何停止该行为?

版本

Ubuntu 14.04

Apache 2.4.7

PHP 5.5.9-1ubuntu4.5

好吧,事实证明,我对发生的事情只有一个新手的理解。我从来没有想过 ldap_connect() 作为 php 调用与 mod_ldap 或任何 apache 模块无关。因此,disabling/enabling apache mods 没有做任何事情,因为...它与 apache mods 无关。

所以...我能够使用

禁用 ldap php 扩展

sudo php5dismod ldap

并且能够通过

检查它是否被禁用

php -m

果然,在重新启动服务器后,运行 我的脚本导致了 ldap_connect() 的 No function 错误(就像我 expecting/hoping 一样)。现在我只需要弄清楚为什么 ldap_bind() 挂起...