代码之家  ›  专栏  ›  技术社区  ›  aidan

为什么我的apache2::log输出用\n替换换行?

  •  2
  • aidan  · 技术社区  · 15 年前

    我在apache2/mod_perl下设置了多个vhost。我用了 ErrorLog 指令为每个vhost获取单独的错误日志。这只在我使用apache2::log时按预期工作。warn'将只记录到常规错误日志。

    所以一切都正常。最后。但是还有一个问题:当我通过$R->日志错误登录时,我发现换行符被替换为 \n

    知道为什么会发生这种情况吗,以及如何解决?

    谢谢。

    3 回复  |  直到 11 年前
        1
  •  8
  •   Sinan Ünür    15 年前

    这不是mod euperl问题,而是Apache问题。显然,将未捕获的输出打印到错误日志中存在一些安全问题(我不完全确定原因),因此在使用以下方法构建/配置时,必须在Apache中显式启用此功能:

    CFLAGS=-DAP_UNSAFE_ERROR_LOG_UNESCAPED ./configure
    

    如果您使用的是已经安装的Apache,那么您可以做的就不多了。

        2
  •  0
  •   DaveShaw Thishin    13 年前

    如果您有一个预构建的安装,您可以使用这一行代码来解决这个问题,但是它必须包含在vhost中的每个页面执行中,比如header.php或config.php文件中。

    ini_set('error_log','/var/log/apache2/error.log');
    
        3
  •  0
  •   Rookie Programmer Aravind    11 年前

    我知道这是一个非常古老的线程,但仍然在google的搜索结果中处于领先地位,所以为了帮助所有人,mod euperl.pl中的以下更改确实帮助了我:

    评论如下:

    BEGIN { *CORE::GLOBAL::warn = \&Apache2::ServerRec::warn; }
    

    以上为: 使警告转到虚拟主机的日志,而不是主服务器日志。

    我希望这能帮助像我这样的人。)