2008-08-01 57 views
96

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

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

有没有办法让每个虚拟主机都有单独的php error_logs

回答

73

要设置阿帕奇不是PHP)登录,要做到这一点最简单的方法是做:

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

如果没有领先的IT假定“/”是相对的。

Apache Error Log Page

+6

这是Apache的错误日志,这是独立于PHP错误日志(请参阅其他评论) – thelem 2010-11-18 07:48:02

+2

PHP的错误日志默认为Apache的错误日志。 – helloandre 2012-01-03 19:00:33

+0

相对于什么?它写入的`httpd.conf`的目录,或者? – mb21 2013-09-03 16:11:12

8

的默认行为是error_log中()输出到Apache的错误日志。如果没有发生这种情况,请检查您的php.ini设置是否包含error_log指令 - 不要使用当前虚拟主机的Apache日志文件。

+0

我会检查。我只是想知道,如果我们希望开发人员有机会调试他们的代码而不给他们提供可能包含其他敏感数据的apache错误日志,那么是否仍然可以将apache和php错误日志分开。 – 2008-08-01 22:31:54

12

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

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

任何人都可以评论`php_admin_value`和`php_value`之间的区别吗? – 2014-07-04 01:31:08

5

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

<VirtualHost myvhost:80> 
    ServerAdmin [email protected] 
    DocumentRoot /opt/web 
    ServerName myvhost 
    ErrorLog logs/myvhost-error_log 
    CustomLog logs/myvhost-access_log common 
</VirtualHost> 
5

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

3

你可以尝试:

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

,但我不知道,如果是去工作。我尝试在我的网站上没有成功。

5

是的,你可以试试,

php_value error_log "/var/log/php_log" 
.htaccess

,或者你可以有用户在其剧本的开头使用ini_set()如果他们希望有记录。

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

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

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

或Apache会将日志写入其error_log

6

请勿将error_log设置为您的syslog材料所在的位置eg /var/log/apache2,因为它们的错误将被ErrorLog拦截。相反,请在您的项目文件夹中创建subdir日志,并在php_valueerror_log "/path/to/project/logs"中创建subdir。这适用于.htaccess文件和虚拟主机。另外,还要确保你把php_flaglog_errors

131

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

<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