php错误处理函数总结

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错误处理函数总结,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。