5

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

4

3 回答 3

8

请检查您的 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
于 2014-10-09T10:58:54.803 回答
1

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

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

另一方面 CodeIgniter 使用功能:

log_message('level,'message')

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

log_message('error','I'm an error!')

在你的代码的某个地方,你真的应该在日志目录中有一个新的日志文件。

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

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

于 2013-03-13T16:49:00.400 回答
1

您必须设置 error_reporting(E_ALL); 在您的 index.php 文件中的案例“生产”下

于 2016-01-07T08:12:00.250 回答