我在 apache2 / mod_perl 下设置了多个虚拟主机。我使用该ErrorLog
指令为每个虚拟主机获取单独的错误日志。这仅在我使用 Apache2::Log 时按预期工作。'warn' 只会记录到常规错误日志。
所以这一切都有效。最后。但是还有一个问题:当我通过 $r->log_error 登录时,我发现换行符被替换为\n
知道为什么会发生这种情况,以及如何解决吗?
谢谢。
这不是 mod_perl 问题,而是 Apache 问题。显然,将未转义的输出打印到错误日志中存在一些安全问题(我不完全确定为什么),因此在使用此构建/配置它时,您必须在 Apache 中显式启用它:
CFLAGS=-DAP_UNSAFE_ERROR_LOG_UNESCAPED ./configure
如果您使用的是已安装的 apache,则您无能为力来更改它。
如果你有预构建的安装,你可以使用这行代码来解决问题,但它必须包含在你的 vhost 中的每个页面执行中,比如在 header.php 或 config.php 文件中。
ini_set('error_log','/var/log/apache2/error.log');
我知道这是一个非常古老的线程,但仍然在谷歌搜索结果中名列前茅,所以为了帮助所有人,mod_perl.pl 中的以下更改确实帮助了我:
在下面注释掉:
BEGIN { *CORE::GLOBAL::warn = \&Apache2::ServerRec::warn; }
以上是针对: 使警告转到虚拟主机的日志而不是主服务器日志。
我希望这可以帮助像我这样的人:)