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

Dem*_*ser 4 php error-handling configuration logging codeigniter

我在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"
Run Code Online (Sandbox Code Playgroud)

CodeIgniter中的config.php-

$config['log_threshold'] = 1;
$config['log_path'] = getcwd() . '/' . SYSDIR . '/logs/';
Run Code Online (Sandbox Code Playgroud)

在Index.php文件中 -

case 'development':
error_reporting(E_ALL);
break;

case 'testing':
case 'production':
     error_reporting(0);
Run Code Online (Sandbox Code Playgroud)

当它在Index.php中的"开发"时,我会在网页上看到警告和错误消息,PHP致命错误,php_errors.log文件中的PHP Parse错误.但如果我将其设为"生产",则不会显示错误/警告,也不会在文件中记录.如何在不显示的情况下记录所有错误和消息?

(这里只提一下 - 文件夹application/logs /是777,我所拥有的是index.html,其中写有"403 Forbidden".)

小智 7

请检查您的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
Run Code Online (Sandbox Code Playgroud)


dar*_*ess 1

我不完全确定,但我认为你将两件事混合在一起。

php 设置中的error_reporting显示 php 脚本执行期间创建的错误。如果您使用“desplay_errors”=关闭。PHP 不会显示任何这些错误。您已打开 log_errors 并设置了一个文件夹。所以 PHP 错误将到达 /var/log/php_errors.log 文件。

另一方面 CodeIgniter 使用函数:

log_message('level,'message')
Run Code Online (Sandbox Code Playgroud)

它用于将错误/调试/信息存储到日志文件中。如果你打电话

log_message('error','I'm an error!')
Run Code Online (Sandbox Code Playgroud)

在代码中的某个位置,您确实应该在日志目录中拥有一个新的日志文件。

如果有任何 PHP 错误,内部 CodeIgniter 将使用 log_message()。我真的不确定当 display_error 设置为 Off 时它会如何表现(他会认为没有错误?)。

尝试调用您自己的log_message并将display_errors设置为On。我认为这应该有帮助。