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