在过去几个小时谷歌搜索我的问题后,我真的处于黑暗中。
我的问题:
我运行一个带有多个虚拟主机的Apache2网络服务器(Ubuntu Server 16.04)。一切正常,但有一点:我的错误记录
在我的虚拟主机文件中,我设置了:ErrorLog /var/log/sitename/error_test.log
问题是,只有部分错误写在那里。错误的“另一半”(可以这么说)被写入默认的Apache日志文件:/var/log/apache2/error.log
Apache似乎拥有正确的权限,因为在重新启动apache2服务后,它会在正确的目录中创建日志文件。
因为我有几个网站,我当然想分开日志文件。但我似乎无法让它发挥作用。
我已尝试过的内容:
相关信息:
虚拟主机文件:
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中的消息。
谢谢!
答案 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 ...