PHP警告和通知在显示错误时打开,但不记录

PHP警告和通知在显示错误时打开,但不记录,php,apache,.htaccess,error-handling,error-logging,Php,Apache,.htaccess,Error Handling,Error Logging,我试图记录所有的错误,但由于某些原因,我无法让它工作!如果我在我的.htaccess中打开display_errors,那么错误就会到处弹出。但是,我不想让它们显示在屏幕上,而是希望它们被放在一个我可以阅读的日志中,这样我的用户就不会看到错误 我已将以下内容添加到.htaccess文件中: php_flag display_startup_errors off php_flag display_errors off php_flag html_errors off php_flag log_er

我试图记录所有的错误,但由于某些原因,我无法让它工作!如果我在我的.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版本-5.4.39-0+deb7u2

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

如果您的htaccess正在覆盖您的默认设置,请首先使用phpinfo()进行检查。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
然后,您应该看到正在记录的错误。如果失败,则通过实时查看错误日志,然后刷新页面来检查错误日志。要实时查看日志,请执行以下操作:

chown www-data:www-data /var/www/site/php-error.log
对于Ubunut/Debian:

tail -f /var/log/apache2/error
Centos/红帽

tail -f /var/log/httpd/error

很可能是权限问题导致错误没有记录。以下是我使用的代码片段:

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

chown www-data:www-data /var/www/site/php-error.log
对于Ubunut/Debian:

tail -f /var/log/apache2/error
Centos/红帽

tail -f /var/log/httpd/error

您确定“/path/to/errors.txt”可由运行apache的用户(例如用户apache)写入吗?@Jobst这正是问题所在!感谢您和谦卑的Rat指出这一点,并感谢谦卑的Rat提供了如此详细的响应。您确定运行apache的用户(例如用户apache?@Jobst)可以编写“/path/to/errors.txt”吗?问题到底出在哪里!感谢您和卑微的Rat指出这一点,感谢卑微的Rat提供了如此详细的响应Hiya,感谢这一点,检查了所有的值,是的,它们正在按预期的方式覆盖Hiya,感谢这一点,检查了所有的值,是的,它们正在按预期的方式覆盖DAMN权限!!我忘了检查了!谢谢你,它现在工作得很好@达里尔古德是我们中最好的。很高兴我能帮忙。祝你好运该死的权限!!我忘了检查了!谢谢你,它现在工作得很好@达里尔古德是我们中最好的。很高兴我能帮忙。祝你好运