关于linux:每个虚拟主机的error_log?

关于linux:每个虚拟主机的error_log?

error_log per Virtual Host?

在一台运行Apache和PHP 5的Linux服务器上,我们有多个带有独立日志文件的虚拟主机。我们似乎无法在虚拟主机之间分隔php error_log

httpd.conf<Location>中覆盖此设置似乎没有任何作用。

是否有一种方法可以为每个虚拟主机提供单独的php error_logs


如果有人来看,它应该看起来像这样:

1
2
3
4
5
6
7
8
9
10
<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/domains/example.com/html
    ErrorLog /var/www/domains/example.com/apache.error.log
    CustomLog /var/www/domains/example.com/apache.access.log common
    php_flag log_errors on
    php_flag display_errors on
    php_value error_reporting 2147483647
    php_value error_log /var/www/domains/example.com/php.error.log
</VirtualHost>

这仅用于开发,因为display_error已打开。您会注意到Apache错误日志与PHP错误日志是分开的。好东西在php.error.log

在这里查看error_reporting键http://www.php.net/manual/zh-CN/errorfunc.configuration.php#ini.error-reporting


要设置Apache(而非PHP)日志,最简单的方法是:

1
2
3
4
5
<VirtualHost IP:Port>
   # Stuff,
   # More Stuff,
   ErrorLog /path/where/you/want/the/error.log
</VirtualHost>

如果没有前导" /",则认为是相对的。

Apache错误日志页面


我通常只在.htaccess文件或我正在工作的域的vhost.conf中指定此内容。将此添加到以下文件之一:

1
php_admin_value error_log"/var/www/vhosts/example.com/error_log"

error_log()的默认行为是输出到Apache错误日志。如果这没有发生,请检查您的php.ini设置中的error_log指令。将其保留为未设置状态,以将Apache日志文件用于当前vhost。


不要将error_log设置为syslog所在的位置,eg /var/log/apache2,因为它们的错误将被ErrorLog拦截。而是在项目文件夹中为日志创建subdir并执行php_value error_log"/path/to/project/logs"。这适用于.htaccess文件和虚拟主机。还要确保将php_flag log_errors放在


1
php_value error_log"/var/log/httpd/vhost_php_error_log"

它对我有用,但是我必须更改日志文件的许可。

或Apache将日志写入其error_log


是的,您可以尝试,

1
php_value error_log"/var/log/php_log"

.htaccess中的

,或者如果要记录日志,可以让用户在脚本的开头使用ini_set()

另一种选择是使脚本默认为包含脚本的文件夹中的php.ini,然后转到用户/主机的根文件夹,再转到服务器的根目录,或类似名称。这将允许主机添加自己的php.ini值和自己的error_log位置。


您是否尝试过将php_value error_log '/path/to/php_error_log添加到VirtualHost配置中?


我的Apache在httpd.conf中有类似的内容。只需更改ErrorLog和CustomLog设置

1
2
3
4
5
6
7
<VirtualHost myvhost:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /opt/web
    ServerName myvhost
    ErrorLog logs/myvhost-error_log
    CustomLog logs/myvhost-access_log common
</VirtualHost>


您可以尝试:

1
2
3
    <VirtualHost myvhost:80>
       php_value error_log"/var/log/httpd/vhost_php_error_log"
    </Virtual Host>

但是我不确定它是否会起作用。我在网站上尝试失败,


创建简单的VirtualHost:

示例主机名:-thecontrolist.localhost

  • C:\\\\ Windows \\\\ System32 \\\\ drivers \\\\ etc

    主机文件

    中的

    127.0.0.1 thecontrolist.localhost

  • C:\\\\ xampp \\\\ apache \\\\ conf \\\\ extra \\\\ httpd-vhosts.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <VirtualHost *>
      ServerName thecontrolist.localhost
      ServerAlias thecontrolist.localhost
      DocumentRoot"/xampp/htdocs/thecontrolist"
      <Directory"/xampp/htdocs/thecontrolist">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require local
      </Directory>
    </VirtualHost>
  • 别忘了重启您的apache。
    有关更多信息,请检查此链接


  • 推荐阅读