默认情况下,将PHP错误记录到Apache VirtualHost的ErrorLog中


Log PHP errors by default to Apache VirtualHost its ErrorLog

我在Apache中运行了很多VirtualHost,但没有一个那么令人兴奋。有没有比为每个虚拟主机指定php_value error_log /var/log/www-site/error.log更简单的方法?

每个VirtualHost总是有其ErrorLog集:

<VirtualHost *:443>
  DocumentRoot /var/www-site
  ServerName site.me
  ServerAlias www.site.me
  CustomLog /var/log/www-site/access.log combined
  ErrorLog  /var/log/www-site/error.log
</VirtualHost>

Apache中是否有一个设置,允许您在默认情况下将PHP错误记录到Apache的错误日志文件中,而无需指定它?

据我所知,PHP无法访问Apache的ErrorLog指令,因此无法将所有错误自动记录到同一位置。如果你能使用它,你可能想看看mod_macro(https://httpd.apache.org/docs/2.4/mod/mod_macro.html)。自Apache 2.4.6以来,默认情况下它是可用的,但可以手动安装在较低版本上。

它允许您在一个地方定义错误日志行,然后在每个vhost中用一行包含所有错误日志行。

error_macro.conf

<Macro error_logs $site>
    php_value error_log /var/log/$site/error.log
    CustomLog /var/log/$site/access.log combined
    ErrorLog  /var/log/$site/error.log
</Macro>

在每个VirtualHost中

Use error_logs www-site