我可以从PHP 5.4.16 CLI运行以下命令:
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
$conn = ldap_connect($hostname);
ldap_bind($conn, $ldaprdn);
我将获得很多调试输出到stderr,其开始如下:
ldap_create
ldap_url_parse_ext(ldaps://ldap.example.com)
ldap_bind_s
ldap_simple_bind_s
ldap_sasl_bind_s
ldap_sasl_bind
ldap_send_initial_request
...
这对于在CLI上进行调试非常有用.但是,我需要在Apache 2.2.15 mod_php内进行调试,因为我发现那里存在间歇性的LDAP连接,无法在命令行上重现.
我以为我可以从Web服务器运行相同的代码,并在Apache的错误日志中看到调试信息,但是消息没有显示在那里. PHP错误/警告肯定会进入错误日志,我尝试使用error_reporting(-1),但无法使这些调试消息显示在任何地方.
在Apache下运行时,是否可以通过某种方式查看这些stderr调试消息?
解决方法:
答案是正在记录这些消息,但是记录到与error_log()消息所在位置不同的日志文件中.在我的Apache conf中,每个虚拟主机都有自己的错误日志文件.还有一个全局错误日志文件,其中会显示Apache启动/关闭消息.
我在虚拟主机上运行这些LDAP调试脚本,并期望错误输出进入主机的已定义错误日志……就像所有其他错误消息一样.但是由于某种原因,那些ldap调试行会发送到全局错误日志.