PHP错误报告级别(PHP Notice)解决方案汇总

笔记 - 代码仓库 - 小技巧

发布时间:2019-02-22 11:12:03

admin 于  2020-12-25 22:51:40 编辑

错误报告级别:指定了在什么情况下,脚本代码中的错误(这里的错误是广义的错误,包括E_NOTICE注意、E_WARNING警告、E_ERROR致命错误等)会以错误报告的形式输出。

错误详情

出现情况:

Notice: Undefined index: name in ......
Notice: Undefined index: key in......

发生原因:

PHP提示Notice:Undefined index 问题,Undefined index:是指你的代码里存在“变量还未定义、赋值就使用”的错误,这个不是致命错误,不会让你的php代码运行强行中止,但是有潜在的出问题的危险......

解决方案

方案一

规范代码,全部赋值

对每一个变量都进行赋值,养成良好的代码书写习惯。

方案二

对代码进行有值判断

使用 isset() 函数

//如果$xx值不存在,就将$xx值赋为空值
if(!isset($xx)) $xx="";

不推荐方案

方案三

关闭PHP环境错误测试

php.ini 文件中,找到 error_reporting 并修改值

error_reporting = E_ALL & ~E_NOTICE

定义和用法

error_reporting() 设置 PHP 的报错级别并返回当前级别。

函数语法

error_reporting(report_level)

如果参数 level 未指定,当前报错级别将被返回。
常量描述
1E_ERROR致命的运行错误。错误无法恢复,暂停执行脚本。
2E_WARNING运行时警告(非致命性错误)。非致命的运行错误,脚本执行不会停止。
4E_PARSE编译时解析错误。解析错误只由分析器产生。
8E_NOTICE运行时提醒(这些经常是你代码中的bug引起的,也可能是有意的行为造成的。)
16E_CORE_ERRORPHP启动时初始化过程中的致命错误。
32E_CORE_WARNINGPHP启动时初始化过程中的警告(非致命性错)。
64E_COMPILE_ERROR编译时致命性错。这就像由Zend脚本引擎生成了一个E_ERROR。
128E_COMPILE_WARNING编译时警告(非致命性错)。这就像由Zend脚本引擎生成了一个E_WARNING警告。
256E_USER_ERROR用户自定义的错误消息。这就像由使用PHP函数trigger_error(程序员设置E_ERROR)
512E_USER_WARNING用户自定义的警告消息。这就像由使用PHP函数trigger_error(程序员设定的一个E_WARNING警告)
1024E_USER_NOTICE 用户自定义的提醒消息。这就像一个由使用PHP函数trigger_error(程序员一个E_NOTICE集)
2048E_STRICT 编码标准化警告。允许PHP建议如何修改代码以确保最佳的互操作性向前兼容性。
4096E_RECOVERABLE_ERROR开捕致命错误。这就像一个E_ERROR,但可以通过用户定义的处理捕获(又见set_error_handler())
8191E_ALL所有的错误和警告(不包括 E_STRICT) (E_STRICT will be part of E_ALL as of PHP 6.0)

该方法直接修改PHP环境,会影响到当前开发环境中所有网站。

方法四

在每个文件头部关闭警告功能

<*?php
  //加上error_reporting(0);就不会弹出警告了  
  error_reporting(0);

该方法会使当前页面中所有的警告全部失效。

方法五

关闭所有网站错误提示

php.ini 找到并设置

display_errors = Off

该方法会使当前开发环境中的所有网站错误提示全部关闭。

方法六

判断部分错误不提示

加上 @ 表示这行如果有错误或是警告不要輸出。

@$page=$_GET['page']

该方法会使开发者捕捉不到错误,为以后的开发过程遇到错误埋下符笔。

转载声明:本站文章无特别说明,皆为原创,版权所有,转载请注明:Dy大叔的日常

转载自 PHP错误报告级别(PHP Notice)解决方案汇总 | XDY.ME@Dy大叔的日常

XDY.ME@Dy大叔的日常