PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
在看帝国cms的connect.php是发现第一句是error_reporting(E_ALL ^ E_NOTICE);以前也没注意过这个语句,知道是设置错误提示的,但不清楚具体怎样设置使用。下面从网上摘抄了些东西,总结了一下。 `error_reporting(E_ALL ^ E_NOTICE)` 是PHP中用于设置错误报告级别的函数调用,它用于控制PHP在执行脚本过程中如何处理和显示错误信息。在PHP中,错误分为多个级别,每种级别代表不同严重程度的问题。理解这个函数的含义和使用方法对于编写健壮的代码至关重要。 `E_ALL` 是一个预定义常量,它表示所有类型的错误和警告,包括编译时和运行时的错误。而 `E_NOTICE` 是一个特定的错误级别,通常涉及代码中的潜在问题,如未定义的变量、未初始化的变量等。 `E_ALL ^ E_NOTICE` 中的 `^` 操作符表示异或。这个表达式意味着显示所有错误,除了 `E_NOTICE` 类型的错误。换句话说,它将禁用那些关于未定义变量或未初始化变量的提醒,但仍然显示其他类型的错误。这通常用于开发环境中,因为开发者可能不希望 `E_NOTICE` 级别的错误干扰他们的测试流程,但在生产环境中,所有的错误报告都是至关重要的。 在给定的例子中,问题在于代码: ```php if (!$tmp_i) { $tmp_i=10; } ``` 在PHP 4.3.0中没有问题,但在更新到4.3.1后,由于更严格的错误检查,会触发 `E_NOTICE` 错误,提示未定义变量 `$tmp_i`。要解决这个问题,有以下几种方式: 1. 直接在代码开头添加 `error_reporting(E_ALL ^ E_NOTICE);`,这样可以禁用 `E_NOTICE` 类型的错误报告,使得程序在4.3.1环境下运行时不显示这些错误。 2. 修改 `php.ini` 文件中的 `error_reporting` 配置,将其设置为 `E_ALL & ~E_NOTICE`,同样会达到同样的效果。 3. 当然,最理想的解决办法是修复代码本身,确保在使用变量前已经定义或初始化,例如: ```php $tmp_i = isset($tmp_i) ? $tmp_i : 10; if (!$tmp_i) { $tmp_i=10; } ``` `error_reporting()` 函数可以根据需要接受不同的参数来设置错误报告级别。以下是一些常见的用法: - `error_reporting(0);` 禁用所有错误报告。 - `error_reporting(E_ALL ^ E_NOTICE);` 显示所有错误,但不包括 `E_NOTICE`。 - `error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);` 显示除 `E_WARNING` 和 `E_NOTICE` 以外的所有错误。 - `error_reporting(E_ERROR | E_WARNING | E_PARSE);` 只显示运行时错误和语法错误,与 `error_reporting(E_ALL ^ E_NOTICE);` 效果相同。 - `error_reporting(E_ALL);` 显示所有错误和警告,这对于调试非常有用。 正确使用 `error_reporting()` 能帮助开发者更好地管理和控制代码的错误处理,从而提高代码质量并减少线上环境的故障。在开发过程中,通常建议开启更多的错误报告,以便尽早发现和修复问题;而在生产环境中,则通常会关闭或限制错误报告,以避免敏感信息泄露给用户。
- 粉丝: 4
- 资源: 868
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助