如何从 mod_php 查看 PHP 的 ldap_* 函数的标准错误(LDAP_OPT_DEBUG_LEVEL=7)

2022-01-17 00:00:00 stderr ldap php apache2

我可以从 PHP 5.4.16 CLI 运行以下命令:

I can run the following from the PHP 5.4.16 CLI:

ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
$conn = ldap_connect($hostname);
ldap_bind($conn, $ldaprdn);

我会得到大量的调试输出到 stderr,像这样开始:

And I will get a lot of debug output to stderr that starts like this:

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 连接断断续续,我无法在命令行上重现.

That is great for debugging on the CLI. However, I need to debug from within Apache 2.2.15 mod_php because I am seeing intermittent LDAP connectivity there that I cannot reproduce on the command line.

我认为我可以从 Web 服务器运行相同的代码,并在 Apache 的错误日志中查看调试信息,但消息没有显示在那里.PHP 错误/警告肯定会进入错误日志,我尝试了 error_reporting(-1),但无法让这些调试消息显示在任何地方.

I thought I could run the same code from the web server and see that debug information in Apache's error log, but the messages are not showing up there. PHP errors/warnings are definitely going to the error log, and I tried error_reporting(-1), but can't get those debug messages to show anywhere.

在 Apache 下运行时,我可以通过某种方式查看那些 stderr 调试消息吗?

Is there some way I can see those stderr debug messages when running under Apache?

推荐答案

答案是这些消息正在被记录,但是记录到一个不同于的日志文件,而不是error_log() 消息去.在我的 Apache conf 中,每个虚拟主机都有自己的错误日志文件.还有一个全局错误日志文件,其中显示 Apache 启动/关闭消息.

The answer is that those messages are being logged, but to a different log file than where the error_log() messages go. In my Apache conf, each virtual host has its own error log file. There is also a global error log file where Apache startup/shutdown messages show up.

我在虚拟主机上运行这些 LDAP 调试脚本,并期望错误输出进入主机定义的错误日志......就像所有其他错误消息一样.但由于某种原因,这些 ldap 调试行被发送到全局错误日志.

I was running these LDAP debug scripts on a virtual host and expecting the error output to go to the host's defined error log... just like all other error messages do. But for some reason those ldap debug lines get sent to the global error log.

相关文章