当我尝试使用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
答案 0 :(得分:0)
事实证明,我对新发生的事情有了新的理解。我从未想过ldap_connect()
作为php调用与mod_ldap
或任何apache模块无关。因此,禁用/启用apache mods没有做任何事情,因为......它与apache mods无关。
所以......我能够用
禁用ldap php扩展 sudo php5dismod ldap
并且能够通过
检查它是否已被禁用 php -m
当然,在重新启动服务器之后,运行我的脚本会导致ldap_connect()
的No函数错误(就像我期待/希望的那样)。现在我只需要找出为什么ldap_bind()
挂起......