PHP警告和通知显示display_errors打开,但不记录日志


PHP Warnings and Notices Showing with display_errors turned on but are not logging

我试图记录所有的错误,但由于某种原因,我不能让它工作!如果我在。htaccess中打开display_errors错误就会到处弹出。但是我不想把它们显示出来,我想把它们放在我可以阅读的日志中,这样我的用户就看不到错误了。

我已经添加了这些到我的。htaccess文件:

php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /path/to/errors.txt
php_value error_reporting 32767
php_value log_errors_max_len 2048

errors.log仍然是空的!我试着重新启动apache,整个服务器,什么都没有。如有任何帮助,我将不胜感激。

PHP Version - 5.4.39-0+deb7u2

首先请检查使用phpinfo(),如果你的默认设置被你的htaccess覆盖。phpinfo将显示本地和主值。

这很可能是一个权限问题,为什么错误没有记录。下面是我使用的代码片段:

ini_set("error_reporting", -1);
ini_set("log_errors", 1);
ini_set("error_log", "/var/www/site/php-error.log");

我假设您使用的是Linux发行版,因此一旦您的页面中有了代码,使用命令行创建文件:

touch /var/www/site/php-error.log
chmod 644 /var/www/site/php-error.log

对于Ubuntu/Debian,执行如下操作:

chown www-data:www-data /var/www/site/php-error.log

或者对于Centos/Red Hat:

chown apache:apache /var/www/site/php-error.log

然后您应该看到正在记录的错误。如果失败,则通过实时查看错误日志并刷新页面来检查错误日志。要实时查看日志,请执行以下操作:

Ubunut/Debian:

tail -f /var/log/apache2/error

For Centos/Red Hat

tail -f /var/log/httpd/error