Apache2 ErrorLog意外行为

时间:2018-02-14 13:56:40

标签: linux apache webserver apache2 ubuntu-16.04

在过去几个小时谷歌搜索我的问题后,我真的处于黑暗中。

我的问题:
我运行一个带有多个虚拟主机的Apache2网络服务器(Ubuntu Server 16.04)。一切正常,但有一点:我的错误记录 在我的虚拟主机文件中,我设置了:ErrorLog /var/log/sitename/error_test.log

问题是,只有部分错误写在那里。错误的“另一半”(可以这么说)被写入默认的Apache日志文件:/var/log/apache2/error.log

Apache似乎拥有正确的权限,因为在重新启动apache2服务后,它会在正确的目录中创建日志文件。

因为我有几个网站,我当然想分开日志文件。但我似乎无法让它发挥作用。

我已尝试过的内容:

  • 检查权限(甚至是整个目录的777),但这似乎不是问题,因为有些错误会写入指定的日志文件中。
  • 将LogLevel更改为info / warn / error / debug等。当我将其设置为“debug”时,这导致我在日志文件中获得了一些其他信息,但最重要的信息仍然是默认日志文件。 / LI>
  • 日志文件的不同位置(/ home / username) - >相同的结果
  • 更改了Apache默认用户/组 - >相同的结果

相关信息:

虚拟主机文件:     

   ServerName servername
   DocumentRoot /var/www/sitename/htdocs/

   LogLevel debug

   ErrorLog "/var/log/sitename/error_test.log"
   CustomLog "/var/log/sitename/custom_test.log" combined

   ScriptAlias /cgi-bin/ /home/www/sitename/scripts/

   ReWriteEngine on
   ReWriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)

   ReWriteRule .* -[F]

</VirtualHost>

error_test.log:

[authz_core:debug] [pid 3157:tid 140305256847104] mod_authz_core.c(809): [client IP-ADDRESS] AH01626: authorization result of Require all granted: granted

默认Apache2日志文件:

[pid 3232:tid 140305620424576] (13)Permission denied: AH01241: exec of '/var/www/sitename/scripts/errorgenerator.pl' failed

请注意,默认Apache2文件中的“Permission denied”消息是由我生成的,用于测试日志文件。这是我想要在自定义集ErrorLog中的消息。

谢谢!

1 个答案:

答案 0 :(得分:0)

好吧我觉得自己像个白痴,但在发布我的问题之后我偶然发现了这个帖子:Errors for virtual host are not written to specified ErrorLog, but to default error_log

这促使我朝着正确的方向前进。解决方案:

sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
sudo a2enmod cgi
sudo service apache2 restart

Apache(mod_cgid)的默认cgi处理程序中似乎存在导致此行为的错误。请参阅:https://bz.apache.org/bugzilla/show_bug.cgi?id=14090

切换到mod_cgi(使用上述命令执行),并将错误写入虚拟主机中声明的ErrorLog ...