用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

PHP线上错误日志控制(error_reporting和display_errors)

时间:2015-01-23  来源:西部数据  作者:西部数据

在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框架就是这样,代码如下:

  1. if (defined('ENVIRONMENT')) 
  2.  switch (ENVIRONMENT) 
  3.  { 
  4.   case 'development'
  5.    error_reporting(E_ALL); 
  6.   break
  7.  
  8.   case 'testing'
  9.   case 'production'
  10.    error_reporting(0); 
  11.   break
  12.  
  13.   default
  14.    exit('The application environment is not set correctly.'); 
  15.  } 

线上的错误信息肯定是要记录的,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就行了.

总结下,在生产环境中不现实错误信息还能记录错误日志,代码如下:

  1. /** 
  2.  * 记录生产环境错误日志 
  3.  *  
  4.  * @link 
  5.  */ 
  6. error_reporting(E_ALL); 
  7. ini_set('display_errors',0); 
  8. ini_set('log_errors',1);  
  9. ini_set('error_log','E:\'.date('Y-m-d').'_phpddt.com.txt'); 
来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
栏目更新
栏目热门