PHP 错误未记录在单独的日志文件中

Posted

技术标签:

【中文标题】PHP 错误未记录在单独的日志文件中【英文标题】:PHP errors not logged in separated log file 【发布时间】:2015-08-03 07:19:18 【问题描述】:

我想在单独的文件中记录 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 关闭 php_flag log_errors 开启 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:BASEindex.php [NC,L]

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

您是否发现任何错误或有什么原因导致它可能无法正常工作?

【问题讨论】:

【参考方案1】:
php_value error_log /var/log/apache2/mydomain.com/mydomain.com.php.error.log

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

    您没有正确的文件权限 自行创建日志文件并再次检查。

【讨论】:

以上是关于PHP 错误未记录在单独的日志文件中的主要内容,如果未能解决你的问题,请参考以下文章

Django 日志记录错误:未创建日志文件

PHP查错

PHP错误日志记录文件位置确定

ASP.NET记录错误日志

PHP错误处理之将错误日志保存在系统文件中

PHP错误处理之将错误日志保存在系统文件中