博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 开启错误显示并设置错误报告级别
阅读量:5165 次
发布时间:2019-06-13

本文共 1882 字,大约阅读时间需要 6 分钟。

警告:生产环境永远都不要显示任何错误信息!

显示错误(display_errors)和错误报告(error_reporting)是两回事。PHP 脚本发生错误时,可以根据设置选择是否报告这个错误(记录到错误日志中),如果设置中开启了 display_errors,则同时把错误信息打印到屏幕上。

项目中常用的设置

switch (ENVIRONMENT){    // 对于开发环境,报告所有错误,同时显示到屏幕上    case 'development':        error_reporting(-1);        ini_set('display_errors', 1);    break;    // 对于测试和生产环境,不显示错误,5.3 以上的版本,不报告通知、废弃方法、严格这几类错误    case 'testing':    case 'production':        ini_set('display_errors', 0);        if (version_compare(PHP_VERSION, '5.3', '>='))        {            error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_DEPRECATED);        }        else        {            error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE);        }    break;    default:        header('HTTP/1.1 503 Service Unavailable.', TRUE, 503);        echo 'The application environment is not set correctly.';        exit(1); // EXIT_ERROR}

PHP 预定义的错误常量

官网定义了所有的 ,常用的有:

  • E_STRICT (integer) PHP 对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。
  • E_ALL (integer) E_STRICT外的所有错误和警告信息。
  • E_ERROR (integer) 致命的运行时错误。这类错误一般是不可恢复的情况,例如内存分配导致的问题。后果是导致脚本终止不再继续运行。
  • E_WARNING (integer) 运行时警告 (非致命错误)。仅给出提示信息,但是脚本不会终止运行。
  • E_PARSE (integer) 编译时语法解析错误。解析错误仅仅由分析器产生。
  • E_NOTICE (integer) 运行时通知。表示脚本遇到可能会表现为错误的情况,但是在可以正常运行的脚本里面也可能会有类似的通知。

在代码中开启并设置显示级别

ini_set() 函数

对于 PHP,可以通过 php.ini 文件设置各种指令。但有时候需要在脚本运行时设置指令,那就需要 ini_set() 函数了。

string ini_set ( string $varname , string $newvalue )

设置指定配置选项的值。这个选项会在脚本运行时保持新的值,并在脚本结束时恢复。

例如:

ini_set('error_reporting', E_ALL);ini_set('display_errors', 'on');

error_reporting() 函数

error_reporting() 函数能够在运行时设置 error_reporting 指令。 PHP 有诸多错误级别,使用该函数可以设置在脚本运行时的级别。如果没有设置可选参数, error_reporting() 会返回当前的错误报告级别。

PHP7.2 的默认值为 E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

在开发阶段建议启用 E_NOTICE 显示更多可能的错误。

修改 php.ini 配置文件

error_reporting = E_ALL # 报告所有错误display_errors = On # 显示错误

转载于:https://www.cnblogs.com/kika/p/10851583.html

你可能感兴趣的文章
心急的C小加
查看>>
编译原理 First,Follow,select集求法
查看>>
iOS开发 runtime实现原理以及实际开发中的应用
查看>>
BZOJ2437 NOI2011兔兔与蛋蛋(二分图匹配+博弈)
查看>>
android 学习资源网址
查看>>
qt安装遇到的错误
查看>>
java:Apache Shiro 权限管理
查看>>
objective c的注释规范
查看>>
FreeNas安装配置使用
查看>>
Django(一)框架简介
查看>>
Python操作SQLite数据库的方法详解
查看>>
菜单和工具条(二)
查看>>
hadoop17---RPC和Socket的区别
查看>>
使用JMeter代理录制app测试脚本
查看>>
Linq to Object实现分页获取数据
查看>>
mac常用系统命令
查看>>
android上传文件到服务器
查看>>
我回答了90%的面试题,为什么还被拒?
查看>>
Html - Table 表头固定和 tbody 设置 height 在IE不起作用的解决
查看>>
HDU 2262 回溯算法 递归枚举
查看>>