虚拟主机的错误不会写入指定的 ErrorLog,而是默认 error_log

Errors for virtual host are not written to specified ErrorLog, but to default error_log

我已经在 Debian 7 VM 上升级到 Apache 2.2.22。我刚刚使用 apt-get 安装了它,除了添加我的 VirtualHost

之外没有进行任何配置更改
<VirtualHost *:8001 *:80>
    ServerName devintegration.ie
    ServerAlias devintegration.ie
    DocumentRoot /sites/integration/development/docs
    ScriptAlias /console/ /sites/integration/development/console/
    ErrorLog /sites/logs/devintegration.ie-error_log
    CustomLog /sites/logs/devintegration.ie-access_log common
</VirtualHost>

我习惯的行为是在虚拟主机指定的错误日志中出现任何 Perl 错误或警告。我现在得到的行为是 Perl 错误转到 /var/log/apache2 目录中的常见 Apache 日志,虚拟主机日志仅包含 "Premature end of script headers".

我已经对此进行了一些谷歌搜索,但大部分结果都是关于 mod_perl 的。我确实找到了这个页面,最后一条评论表明它的工作方式发生了变化,但没有提供关于它是否可以改变的信息。 Apache Log Forum"Any information written to stderr by a CGI script will be copied directly to the error log."

有没有办法配置 apache 将 Perl 错误和警告发送到虚拟主机中指定的错误日志?

我之前使用的 Apache 版本是 2.2.15。

这是(曾经是?)a longstanding bug mod_cgid。它的状态仍然是 "RESOLVED LATER",这(显然)意味着:"stop complaining - we'll do it in a later version, not now"。也许它现在已经解决了(你的版本,2.2.22,是 3 岁),但我找不到任何提及。

mod_cgid 是 Apache 线程版本中的默认 .cgi 处理程序。如果您切换到 mod_cgi,例如通过使用应该可以解决您的问题的非线程 apache(就像我一样)。