T8881

display_errors和error_reporting是php程序调试过程中两个非常重要的参数,下面就来介绍一下这两个错误日志的配置如何开启和关闭:

我们知道在产品的生产环境肯定是不能够显示错误的,于是:
php.ini中将 display_errors = On 改为display_errors = Off
或者 ini_set(\'display_errors\',0);

其次,我们知道php的错误级别是由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就行了。

总结下,在生产环境中不显示错误信息还能记录错误日志:

<?php
/**
 * 记录生产环境错误日志
 * 
 * @link http://www.111cn.net
 */
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\');

更改配置文件记录生产环境错误日志(包含警告信息)

display_errors = Off ;;不输出到浏览器

error_reporting = E_ALL | E_STRICT ;;设置错误级别,如果设置成E_ALL | ~E_NOTICE 除了警告信息,其他信息都显示

log_errors = On ;;打开php错误日志功能

error_log = e:\log.txt ;;设置日志文件

output_buffering = Off ;;关闭php输出缓冲区

 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-12-03
  • 2022-12-23
  • 2021-12-22
  • 2021-12-20
  • 2021-12-13
  • 2021-11-01
猜你喜欢
  • 2021-12-23
  • 2022-01-26
  • 2022-12-23
  • 2022-01-25
  • 2022-01-14
  • 2021-08-19
相关资源
相似解决方案