PHP CodeIgniter错误日志无法正常工作

时间:2012-08-09 16:40:14

标签: php codeigniter logging configuration error-handling

我在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”。)

3 个答案:

答案 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'案例