• 技术文章 >php教程 >PHP源码

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

    2016-06-08 17:22:29原创779
    在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 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');
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:nbsp reporting errors error display
    上一篇:PHP CURL 执行 Authorization 请求的例子 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • PHP根据图片色界在不同位置加水印的方法• PHP实现301跳转,及延时跳转代码• 根据访客所在城市ip地址自动跳转到分站的php代码• php入门教程-留言板程序• 字符串截取函数
    1/1

    PHP中文网