在过去的几个小时里,我一直在用谷歌搜索我的问题,现在我真的很茫然。
我的问题:
我使用多个虚拟主机运行一个Apache2 Web服务器(UbuntuServer16.04)。一切正常,但有一件事:我的错误日志。
在我的虚拟主机文件中,我设置了:error log/var/log/sitename/error\u test.log
问题是,只有部分错误写在那里。错误的“另一半”(可以这么说)被写入默认的Apache日志文件/var/log/apache2/error.log
Apache似乎拥有正确的权限,因为在我重新启动apache2服务之后,它会在正确的目录中创建日志文件本身。
因为我有几个网站,我当然想分开日志文件。但我好像没法让它起作用。
我已经试过了:
检查权限(甚至777整个目录),但这似乎不是问题,因为在指定的日志文件中写入了一些错误。
将日志级别更改为info/warn/error/debug etc。这导致在将日志文件设置为“debug”时,我在日志文件中获得了一些其他信息,但最重要的信息仍然属于默认日志文件。
日志文件的不同位置(/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>

错误日志:
[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”消息是由我生成的,用于测试日志文件。这是我想在我的自定义设置错误日志中包含的消息。
谢谢您!

最佳答案

好吧,我觉得自己像个白痴,但就在这里发布我的问题后,我无意中发现了这条线索: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的默认cgi处理程序(mod_cgid)中似乎存在导致这种行为的错误。见:https://bz.apache.org/bugzilla/show_bug.cgi?id=14090
切换到mod_cgi(使用上面的命令执行此操作),错误将写入虚拟主机中声明的错误日志。。。

关于linux - Apache2 ErrorLog异常行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48788951/

10-12 21:38
查看更多