加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP线上错误日志控制 error_reporting与display_errors

发布时间:2022-01-22 06:42:54 所属栏目:PHP教程 来源:互联网
导读:在php学习中error_reporting和display_errors是两个非常重要的参数,我们在学习调试过程中是少不了它们的,开启与关闭这两个错误日志非常的简单只要在php.ini简单处理即可,下文会有介绍. 我们知道产品的生产环境肯定是不给予显示错误的,于是,php.ini中将 dis
  在php学习中error_reporting和display_errors是两个非常重要的参数,我们在学习调试过程中是少不了它们的,开启与关闭这两个错误日志非常的简单只要在php.ini简单处理即可,下文会有介绍.
 
  我们知道产品的生产环境肯定是不给予显示错误的,于是,php.ini中将 display_errors = Off 改为display_errors = On,或者 ini_set('display_errors',0);
 
  其次,我们知道php的错误级别是由error_reporting【error_reporting详细教程】控制的,但是有很多人在生产环境关闭了错误信息提示:error_reporting(0);
 
  其实这种做法,我觉得不科学,在codeigniter框架就是这样,代码如下:
 
  if (defined('ENVIRONMENT'))
  {
   switch (ENVIRONMENT)
   {
    case 'development':
     error_reporting(E_ALL);
    break;
  
    case 'testing':
    case 'production':
     error_reporting(0);
    break;
  
    default:
     exit('The application environment is not set correctly.');
   }
  }
  线上的错误信息肯定是要记录的,error_reporting(0)这样会导致所有的错误信息不会记录,应该:error_reporting = E_ALL & ~E_NOTICE,只要display_errors = Off,错误信息就不会再页面上显示,因为display_errors的优先级别更高.
 
  特别要注意的是:如果php.ini中log_errors= On,据官方的说法,那么必须指定error_log文件,如果没指定或者指定的文件没有权限写入,那么照样会输出到正常的输出渠道,那么也就使得display_errors 这个指定的Off失效,错误信息还是打印了出来,将log_errors = Off就行了.
 
  总结下,在生产环境中不现实错误信息还能记录错误日志,代码如下:
 
  /**
   * 记录生产环境错误日志
   *  
   * @link
   */
  error_reporting(E_ALL);
  ini_set('display_errors',0);
  ini_set('log_errors',1);  
  ini_set('error_log','E:/'.date('Y-m-d').'_phpddt.com.txt'); 

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读