【问题标题】:Log PHP errors by default to Apache VirtualHost its ErrorLog默认情况下将 PHP 错误记录到 Apache VirtualHost 的 ErrorLog
【发布时间】:2016-04-28 11:38:45
【问题描述】:

我在 Apache 中运行了很多 VirtualHost,但没有一个是那么令人兴奋的。有没有比为每个 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 virtualhost


    【解决方案1】:

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

    它将允许您在一个位置定义错误日志行,然后在每个虚拟主机中将所有这些行包含在一行中。

    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>
    

    在每个虚拟主机中

    Use error_logs www-site
    

    【讨论】:

    • 哇,太甜了!我还可以通过将DocumentRoot 设置为/var/www-$site 来扩展这一点,对吧,甚至更少的自定义输入?
    • 是的,没错。您的虚拟主机之间的任何共同点都可以放入宏中。请注意,如果您需要传入多个参数,它们可以采用其他参数 -
    猜你喜欢
    • 1970-01-01
    • 2010-12-26
    • 2018-04-13
    • 2012-02-29
    • 2012-01-02
    • 1970-01-01
    • 2016-06-19
    • 2015-06-04
    • 2010-12-02
    相关资源
    最近更新 更多