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

时间:2015-01-05 19:35:36

标签: apache ldap

当我尝试使用LDAP凭据登录时,我的(开发)网站出现问题。使用xdebug,我能够确定挂起到特定代码行,这是对ldap_bind(...)的调用。经过几天试图理解为什么它挂起,我的一个调试技术是禁用mod_ldap,然后只是尝试在apache日志中显示任何错误(在此开始之后,apache错误日志还没有被删除在执行此http请求时记录任何错误;它也会挂起。

我做了什么

我已停用模块(sudo a2dismod mod_ldap),重新启动服务器(sudo service apache2 restart),并确认模块未启用(apache2ctl -M未显示{{1} })

问题

它到达mod_ldap时仍然会挂起,但是,它甚至不应该达到这一点,因为没有mod_ldap,我的代码甚至不能成功调用ldap_bind()(右?)返回ldap_connect()(意味着呼叫成功)。我期待NoMethod或功能错误。

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

版本

  

Ubuntu 14.04

     

Apache 2.4.7

     

PHP 5.5.9-1ubuntu4.5

1 个答案:

答案 0 :(得分:0)

事实证明,我对新发生的事情有了新的理解。我从未想过ldap_connect()作为php调用与mod_ldap或任何apache模块无关。因此,禁用/启用apache mods没有做任何事情,因为......它与apache mods无关。

所以......我能够用

禁用ldap php扩展

sudo php5dismod ldap

并且能够通过

检查它是否已被禁用

php -m

当然,在重新启动服务器之后,运行我的脚本会导致ldap_connect()的No函数错误(就像我期待/希望的那样)。现在我只需要找出为什么ldap_bind()挂起......