我可以从 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 会议中,每个虚拟主机都有自己的错误日志文件。还有一个全局错误日志文件,其中显示了 Apache 启动/关闭消息。
我在虚拟主机上运行这些 LDAP 调试脚本,并期望错误输出转到主机定义的错误日志......就像所有其他错误消息一样。但是由于某种原因,这些ldap调试行被发送到全局错误日志。