如何在codeigniter中抑制通知错误?

Pim*_*Pim 3 php codeigniter

我想在某个cronjob期间抑制codeigniter错误日志中的通知.我已尝试在行前使用@,但它仍会在日志中打印通知:

这是生成通知的行:

@$resultarray[1][2]++;
Run Code Online (Sandbox Code Playgroud)

通知:......严重性:通知 - >未定义的偏移量:1 ...

我在这做错了什么?

(我使用得很好,所以请不要声称不要使用@,谢谢:))

gra*_*ant 6

要让PHP报告除E_Notice之外的所有错误,请调用PHP error_reporting函数,如下所示:

error_reporting(E_ALL & ~E_NOTICE);
Run Code Online (Sandbox Code Playgroud)

我认为最好的方法是在应用程序的根目录配置index.php,首先检测应用程序环境,然后有条件地设置报告的PHP错误.

的index.php

if (defined('ENVIRONMENT'))
{
  switch (ENVIRONMENT)
  {
    case 'development':
    case 'testing':
    case 'staging':
      error_reporting(E_ALL & ~E_NOTICE);
    break;

    case 'production':
      error_reporting(0);
    break;

    default:
      exit('The application environment is not set correctly.');
  }
}
Run Code Online (Sandbox Code Playgroud)

有关更多配置选项,请参阅有关error_reporting函数的官方PHP文档.

或者,您可以在您正在使用的特定文件中调用error_reporting函数(无论您的cron作业调用),它将使用您在index.php中设置的内容覆盖配置.这是一个使用控制器的简单示例:

class Sample_Controller extends CI_Controller {

  public function __construct()
  {
    parent::__construct();
    error_reporting(E_ALL & ~E_NOTICE);
  }

}
Run Code Online (Sandbox Code Playgroud)