error_reporting 设
置错误报告的级别。其默认值为 E_ALL & ~E_NOTICE。 该设置表示除了 E_NOTICE 其他都显示的错误级别。
lever值
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
错误处理函数
debug调试函数
debug_backtrace() 函数
该函数返回一个关联数组。下面是可能返回的元素
function 字符串 当前的函数名。
line 整数 当前的行号。
file 字符串 当前的文件名。
class 字符串 当前的类名
object 对象 当前对象。
type 字符串 当前的调用类型,可能的调用:
返回: "->" - 方法调用
返回: "::" - 静态方法调用
返回 nothing - 函数调用
args 数组 如果在函数中,列出函数参数。如果在被引用的文件中,列出被引用的文件名。
<?php
function my_test($str)
{
$a = ‘123456‘;
print_r(debug_backtrace());
}
my_test(‘test‘);
结果:
Array
(
[0] => Array
(
[file] => D:\projects\localhost\test.php
[line] => 10
[function] => my_test
[args] => Array
(
[0] => test
)
)
)
debug_print_backtrace() 函数输出 backtrace。
function my_test($str)
{
$a = ‘123456‘;
print_r(debug_print_backtrace());
}
my_test(‘test‘);
结果为:#0 my_test(test) called at [D:\projects\localhost\test.php:8]
error_get_last() 函数获取最后发生的错误。
返回的数组包含 4 个键和值:
[type] - 错误类型
[message] - 错误消息
[file] - 发生错误所在的文件
[line] - 发生错误所在的行
error_log(error,type,destination,headers) 发送一个错误请求
error 必需。要记录的错误消息。
type
可选。规定错误记录的类型。
可能的记录类型:
0 - 默认。根据在 php.ini 文件中的 error_log 配置,错误被发送到服务器日志系统或文件。
1 - 错误被发送到 destination 参数中的地址。只有该类型使用 headers 参数。
2 - 通过 PHP debugging 连接来发送错误。该选项只在 PHP 3 中可用。
3 - 错误发送到文件目标字符串。
destination 可选。规定向何处发送错误消息。该参数的值依赖于 "type" 参数的值。
headers
可选。只在 "type" 为 1 时使用。
规定附加的头部,比如 From, Cc 以及 Bcc。由 CRLF (\r\n) 分隔。
注释:在发送电子邮件时,必须包含 From 头部。可以在 php.ini 文件中或者通过此参数设置。
用法一:
<?php
$a = 3;
if($a < 5) {
error_log(‘time:‘.date(‘Y-m-d H:i:s‘).‘ error_message:variable a < 5‘, 3, ‘D:/projects/localhost/error_log/error.log‘);
}
php会自动在error.log日志中写入
用法二:
在apache虚拟主机中制定errorlog
<VirtualHost *:80>
DocumentRoot "D:/projects/localhost"
ServerName localhost
ErrorLog "D:/projects/localhost/error_log/error.log" #指定错误存放日志文件
CustomLog "D:/projects/localhost/error_log/access.log" combined #记录用户操作详细记录文件
</VirtualHost>
<?php
$a = 3;
if($a < 5) {
error_log(‘error_message:variable a < 5‘);
}
可不用记录时间,apache会在日志中生成详细的时间
trigger_error()函数创建用户定义的错误消息。
<?php
$test=2;
if ($test>1)
{
trigger_error("A custom error has been triggered");
}
?>
输出:
Notice: A custom error has been triggered
in C:\webfolder\test.php on line 6
php错误处理函数总结
2021-12-07 22:06:42