您的位置:首页 > 编程语言 > PHP开发

php错误处理函数总结

2014-03-03 16:55 232 查看
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] - 发生错误所在的行

type

0 - 默认。根据在 php.ini 文件中的 error_log 配置,错误被发送到服务器日志系统或文件。

1 - 错误被发送到 destination 参数中的地址。只有该类型使用 headers 参数。

2 - 通过 PHP debugging 连接来发送错误。该选项只在 PHP 3 中可用。

3 - 错误发送到文件目标字符串。

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: