PHP错误日志控制

本文介绍了如何在PHP的生产环境中合理地配置错误处理,确保既不会在页面上显示错误信息,又能有效地记录错误日志。文章提供了具体的配置代码示例,并强调了根据不同环境调整错误报告的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们知道产品的生产环境肯定是不给予显示错误的,于是:
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. {
  3. switch (ENVIRONMENT)
  4. {
  5. case 'development':
  6. error_reporting(E_ALL);
  7. break;
  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. }
  16. }

线上的错误信息肯定是要记录的,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. <?php
  2. /**
  3. * 记录生产环境错误日志
  4. *
  5. * @link http://www.phpddt.com
  6. */
  7. error_reporting(E_ALL);
  8. ini_set('display_errors',0);
  9. ini_set('log_errors',1);
  10. ini_set('error_log','E:\\'.date('Y-m-d').'_phpddt.com.txt');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值