一般的报错: 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错误报告
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 之中,只有'|', '~', '!', '^' 和 '&' 会正确解析。