123

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

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

有没有办法error_logs为每个虚拟主机设置单独的 php?

4

11 回答 11

144

如果有人来看它应该是这样的:

<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/en/errorfunc.configuration.php#ini.error-reporting

于 2010-08-26T15:29:29.597 回答
88

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

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

如果没有前导“/”,则假定是相对的。

Apache 错误日志页面

于 2008-08-01T19:58:45.837 回答
14

我通常只是在一个.htaccess文件vhost.conf我正在处理的域中指定它。将此添加到以下文件之一:

php_admin_value error_log "/var/www/vhosts/example.com/error_log"
于 2008-08-02T01:10:41.027 回答
8

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

于 2008-08-01T22:20:05.117 回答
7

不要设置error_log你的syslog东西去哪里eg /var/log/apache2,因为它们的错误会被ErrorLog. subdir相反,在您的项目文件夹中为日志创建一个并执行php_value error_log "/path/to/project/logs". 这适用于.htaccess 文件和虚拟主机。还要确保你php_flag log_errors穿上

于 2010-04-02T20:50:36.650 回答
6

尝试添加php_value error_log '/path/to/php_error_log到您的 VirtualHost 配置。

于 2008-08-29T06:13:17.963 回答
5

是的,你可以试试

php_value error_log "/var/log/php_log" 

或者,如果用户想要进行日志记录,您可以让用户在脚本的开头使用.htaccessini_set()

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

于 2008-09-22T23:29:15.800 回答
5
php_value error_log "/var/log/httpd/vhost_php_error_log"

它对我有用,但我必须更改日志文件的权限。

否则 Apache 会将日志写入其error_log.

于 2009-07-02T23:54:59.463 回答
4

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

<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>
于 2008-08-09T02:51:15.417 回答
3

你可以试试:

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

但我不确定它是否会起作用。我在我的网站上尝试过,但没有成功。

于 2008-09-22T23:22:10.077 回答
2

创建简单的虚拟主机:

示例主机名:-thecontrolist.localhost

  1. C:\Windows\System32\驱动程序\等

    127.0.0.1 thecontrolist.localhost 在主机文件中

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

    <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>
    
  3. 不要忘记重新启动您的 apache。更多检查这个链接

于 2018-05-31T06:58:39.437 回答