我在php.ini中进行了以下设置 -
error_reporting = E_ALL | E_NOTICE | E_STRICT|E_WARNING
display_errors = Off
log_errors = On
error_log = "/var/log/php_errors.log"
CodeIgniter中的config.php -
$config['log_threshold'] = 1;
$config['log_path'] = getcwd() . '/' . SYSDIR . '/logs/';
在Index.php文件中 -
case 'development':
error_reporting(E_ALL);
break;
case 'testing':
case 'production':
error_reporting(0);
当它在Index.php中的“开发”时,我会在网页上看到警告和错误消息,PHP致命错误,php_errors.log文件中的PHP Parse错误。但如果我将其设为“生产”,则不会显示错误/警告,也不会在文件中记录。如何在不显示的情况下记录所有错误和消息?
(在这里提一下 - 文件夹application / logs /是777,我所拥有的是index.html,其中写有“403 Forbidden”。)
答案 0 :(得分:6)
请检查您的config / config.php文件并检查您的设置
$config['log_threshold'] = 4;
**Note :**
0 = Disables logging, Error logging TURNED OFF
1 = Error Messages (including PHP errors)
2 = Debug Messages
3 = Informational Messages
4 = All Messages
答案 1 :(得分:1)
我不完全确定,但我认为你把两件事混在一起。
php设置中的error_reporting 显示在php脚本执行期间创建的错误。 如果您使用“desplay_errors”= Off。 PHP不会显示任何这些错误。您已打开log_errors并设置了一个文件夹。所以PHP错误将转到/var/log/php_errors.log文件。
另一方面,CodeIgniter使用函数:
log_message('level,'message')
用于将错误/调试/信息存储到日志文件中。如果你打电话
log_message('error','I'm an error!')
在代码中的某个地方,你真的应该在日志目录中有一个新的日志文件。
如果存在任何PHP错误,则Internaly CodeIgniter使用log_message()。当display_error设置为Off时,我真的不确定它会如何表现(他会认为没有错误?)。
尝试调用您自己的 log_message 并将 display_errors 转为开启。我认为它应该有所帮助。
答案 2 :(得分:0)
你必须设置error_reporting(E_ALL);在index.php文件中的'production'案例