PHP报错级别

一般的报错: E_NOTICE注意、E_WARNING警告、E_ERROR致命错误

(一般进行调试的时候显现错误,而平时使用时在php.ini中display_errors设置为Off,就会关闭所有的错误提示。要进行错误显示关闭防止错误消息泄露敏感信息。也可以使用error_reporting(0)关闭所有PHP错误报告)

修改报错显示的方法:

1.直接修改PHP配置文件php.ini 

设置error_reporting后,重启web服务器,就会永久生效


error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT  //意思是报告所有的错误,但除了E_DEPRECATED和E_STRICT这两种。

error_reporting=E_ALL &  ~E_NOTICE  //意思是报告所有的错误,但除了E_NOTICE这一种。

选择自己想要的修改,然后保存,重启web服务器后生效。

2.error_reporting()函数

使用函数后可立即生效,但仅限于在当前脚本中使用error_reporting()函数的后面区域(可以放在整个项目的头文件进行调试)。

int error_reporting ([ int $level ] )

开发时感觉最佳是: error_reporting(E_ALL | E_STRICT)   可以把代码优化到最优


<?php

// 关闭所有PHP错误报告
error_reporting(0);

// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// 报告 E_NOTICE也挺好 (报告未初始化的变量
// 或者捕获变量名的错误拼写)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// 除了 E_NOTICE,报告其他所有错误
error_reporting(E_ALL ^ E_NOTICE);

// 报告所有 PHP 错误 (参见 changelog)
error_reporting(E_ALL);

// 报告所有 PHP 错误
error_reporting(-1);

// 和 error_reporting(E_ALL); 一样
ini_set('error_reporting', E_ALL);

?>

附: http://php.net/manual/zh/errorfunc.constants.php

下列常量作为 PHP 核心的一部分总是可用的。

Note: 你可以使用它们在 php.ini 中的常量名称; 但是在PHP之外,例如在 httpd.conf 之中, 你必须使用二进制位掩码来代替。

错误和日志记录
值    常量    说明    备注
1    E_ERROR (integer)    致命的运行时错误。这类错误一般是不可恢复的情况,例如内存分配导致的问题。后果是导致脚本终止不再继续运行。     
2    E_WARNING (integer)    运行时警告 (非致命错误)。仅给出提示信息,但是脚本不会终止运行。     
4    E_PARSE (integer)    编译时语法解析错误。解析错误仅仅由分析器产生。     
8    E_NOTICE (integer)    运行时通知。表示脚本遇到可能会表现为错误的情况,但是在可以正常运行的脚本里面也可能会有类似的通知。     
16    E_CORE_ERROR (integer)    在PHP初始化启动过程中发生的致命错误。该错误类似 E_ERROR,但是是由PHP引擎核心产生的。    since PHP 4
32    E_CORE_WARNING (integer)    PHP初始化启动过程中发生的警告 (非致命错误) 。类似 E_WARNING,但是是由PHP引擎核心产生的。    since PHP 4
64    E_COMPILE_ERROR (integer)    致命编译时错误。类似E_ERROR, 但是是由Zend脚本引擎产生的。    since PHP 4
128    E_COMPILE_WARNING (integer)    编译时警告 (非致命错误)。类似 E_WARNING,但是是由Zend脚本引擎产生的。    since PHP 4
256    E_USER_ERROR (integer)    用户产生的错误信息。类似 E_ERROR, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。    since PHP 4
512    E_USER_WARNING (integer)    用户产生的警告信息。类似 E_WARNING, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。    since PHP 4
1024    E_USER_NOTICE (integer)    用户产生的通知信息。类似 E_NOTICE, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。    since PHP 4
2048    E_STRICT (integer)    启用 PHP 对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。    since PHP 5
4096    E_RECOVERABLE_ERROR (integer)    可被捕捉的致命错误。 它表示发生了一个可能非常危险的错误,但是还没有导致PHP引擎处于不稳定的状态。 如果该错误没有被用户自定义句柄捕获 (参见 set_error_handler()),将成为一个 E_ERROR 从而脚本会终止运行。    since PHP 5.2.0
8192    E_DEPRECATED (integer)    运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告。    since PHP 5.3.0
16384    E_USER_DEPRECATED (integer)    用户产少的警告信息。 类似 E_DEPRECATED, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。    since PHP 5.3.0
30719    E_ALL (integer)    E_STRICT出外的所有错误和警告信息。    30719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 previously


上面的值(数值或者符号)用于建立一个二进制位掩码,来制定要报告的错误信息。可以使用按位运算符来组合这些值或者屏蔽某些类型的错误。请注意,在 php.ini 之中,只有'|', '~', '!', '^' 和 '&' 会正确解析。
 

### 解决 PHPStorm 中 PHP 代码报错问题的方法 当遇到 PHPStorm 报告 PHP 代码中的错误时,可以采取多种措施来解决问题并提高开发效率。 #### 使用内置调试工具 PHPStorm 提供了强大的调试功能,允许开发者逐步执行代码以识别潜在的问题。通过设置断点并启动调试会话,能够更精确地定位到引发错误的具体位置[^1]。 #### 更新 IDE 和插件版本 确保使用的 PHPStorm 及其所有相关插件都是最新版非常重要。旧版本可能存在未修复的 bug 或者不完全支持某些新特性,这可能会导致误报警告或错误提示。定期检查更新可以帮助减少此类情况的发生。 #### 检查项目配置文件 对于特定框架(如 ThinkPHP),如果存在类似 `thinkphp/library/think/Lang.php` 文件路径下的 `$langSet = strtolower($matches[1]);` 行出现问题,则应仔细审查项目的配置选项以及所依赖库的状态,确认它们是否正确无误地被引入到了工作环境中[^2]。 #### 启用和完善静态分析规则 IDE 的静态代码分析器可以在编写过程中自动检测语法和其他类型的逻辑缺陷。适当调整这些规则使之更加贴合实际需求有助于提前发现更多隐藏的风险点。例如,在处理字符串转换操作时,应该考虑输入数据的有效性和边界条件。 #### 增强文档注释 良好的 API 文档不仅便于团队成员之间的交流协作,也能让 IDE 更好理解业务意图从而提供更为精准的帮助建议。为函数参数、返回值加上详尽描述,并遵循 PSR 标准书写风格指南,可有效降低误解带来的编译期警告数量。 ```php /** * 获取指定键的语言包翻译结果. * * @param string $key 要查找的语言项标识符 * @return mixed|null 如果找到则返回对应的内容;否则返回 null */ function getLangItem(string $key): ?mixed { global $matches; return isset($matches[$key]) ? strtolower($matches[$key]) : null; } ``` #### 定制化错误报告级别 有时候,默认设定下显示出来的所谓 “错误” 实际上只是轻微偏离最佳实践而已。可以根据个人偏好或者具体应用场景灵活调节通知等级,忽略那些不影响程序正常运行的小瑕疵,集中精力应对真正重要的技术难题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值