PHP错误未记录在分隔的日志文件

时间:2015-05-21 14:33:43

标签: php logging apache2 virtualhost

我想在分离的文件中记录apache2和php错误:

我在:/var/log/apache2/mydomain.com中创建了一个目录。这是存储日志文件的位置。

我编辑了/etc/apache2/sites-available/mydomain.com.conf

<VirtualHost *:80>
ServerName mydomain.com
ServerAdmin webmaster@localhost
ServerAlias mydomain.com
DocumentRoot /var/www/mydomain.com/public

php_flag display_errors Off
php_flag log_errors On
php_value log_errors_max_len 0
php_value error_reporting 6135


ErrorLog /var/log/apache2/mydomain.com/mydomain.com.error.log
CustomLog /var/log/apache2/mydomain.com/mydomain.com.access.log common
php_value error_log /var/log/apache2/mydomain.com/mydomain.com.php.error.log

<Directory "/var/www/mydomain.com/public">
    Options FollowSymLinks
    AllowOverride All
</Directory>    

重要设置:

  • php_flag display_errors Off
  • php_flag log_errors On
  • php_value log_errors_max_len 0
  • php_value error_reporting 6135
  • php_value error_log /var/log/apache2/mydomain.com/mydomain.com.php.error.log

但是没有创建文件:mydomain.com.php.error.log,而是将所有PHP错误添加到mydomain.com.error.log文件中。

apache2能够写入目录:/var/log/mydomain.com(已测试,如果我删除文件:mydomain.com.error.log。它将被重新创建)

我的.htaccess文件中没有与日志相关的设置:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]

当我编辑/etc/apache2/sites-available/mydomain.conf文件时,我之后运行:sudo service apache2 restart

您是否看到任何错误或有什么原因可能无效?

1 个答案:

答案 0 :(得分:0)

php_value error_log /var/log/apache2/mydomain.com/mydomain.com.php.error.log

php_value仅在apache下启用php时才有效,即mod_php。以下建议可能有所帮助。

  1. 您没有正确的文件许可
  2. 自己创建日志文件并再次检查。