温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PHP中的错误处理函数有哪些

发布时间:2022-03-18 15:36:10 阅读:196 作者:iii 栏目:大数据
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇“PHP中的错误处理函数有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PHP中的错误处理函数有哪些”文章吧。

error_reporting()

这个函数相必大家多少都会接触过,就是定义 PHP 在运行时的错误处理机制。就像我们在进行调试时,往往需要设置一个 E_ALL 来显示全部的错误信息。

error_reporting(E_ALL);

这个函数只能定义为 PHP 内部提供的那些错误处理的常量,包括:

  • Fatal Error:致命错误(脚本终止运行)

    • E_ERROR         // 致命的运行错误,错误无法恢复,暂停执行脚本
    • E_CORE_ERROR    // PHP启动时初始化过程中的致命错误
    • E_COMPILE_ERROR // 编译时致命性错,就像由Zend脚本引擎生成了一个E_ERROR
    • E_USER_ERROR    // 自定义错误消息。像用PHP函数trigger_error(错误类型设置为:E_USER_ERROR)
  • Parse Error:编译时解析错误,语法错误(脚本终止运行)

    • E_PARSE  //编译时的语法解析错误
  • Warning Error:警告错误(仅给出提示信息,脚本不终止运行)

    • E_WARNING         // 运行时警告 (非致命错误)。
    • E_CORE_WARNING    // PHP初始化启动过程中发生的警告 (非致命错误) 。
    • E_COMPILE_WARNING // 编译警告
    • E_USER_WARNING    // 用户产生的警告信息
  • Notice Error:通知错误(仅给出通知信息,脚本不终止运行)

    • E_NOTICE      // 运行时通知。表示脚本遇到可能会表现为错误的情况.
    • E_USER_NOTICE // 用户产生的通知信息。

当然,这个函数也是可以通过 php.ini 文件进行全局配置的,具体的配置方式这里不再赘述。包括 php.ini 文件的注释中也会有详细的说明。

error_get_last()

error_get_last() 函数则是指的返回我们最后一次的错误信息。它返回的是一个数组,里面会包含错误信息的"type"、"message"、"file"、"line"信息,方便我们查看错误的具体发生位置及内容。

echo $a; // Notice: Undefined variable: aprint_r(error_get_last());// Array// (//     [type] => 8//     [message] => Undefined variable: a//     [file] => /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202004/source/一些简单的错误处理函数(一).php//     [line] => 5// )echo $b;print_r(error_get_last()); // 不会打印$a的问题// Array// (//     [type] => 8//     [message] => Undefined variable: b//     [file] => /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202004/source/一些简单的错误处理函数(一).php//     [line] => 17// )echo $a;echo $b;print_r(error_get_last()); // 同样只会打印$b的问题
 

需要注意的是,它只返回最后一个错误的信息。比如上面示例中最后一段中的 echo $a; 和 echo $b; 都会产生错误,但最终打印出来的只是 echo $b; 所产生的错误信息。

error_clear_last

从名字就可以看出,这个函数的作用是清除最后一次的错误信息。也就是说,如果在发生错误的代码之后调用了这个函数, error_get_last() 就不会打印任何内容了。

echo $a; // Notice: Undefined variable: aerror_clear_last();print_r(error_get_last()); // 不会输出  

error_log

最后我们来看看错误日志记录的一个函数。它不仅可以将日志记录到日志文件中,还可以直接发邮件。

error_log("Test Error One!");// php.ini 中定义的 error_log 文件// [22-Apr-2020 09:04:34 Asia/Shanghai] Test Error One!error_log("Test Error One!"1"423257356@qq.com");echo $a;error_log(base64_encode(json_encode(error_get_last())), 1"423257356@qq.com");
 

第一段我们只有一个参数,所以错误信息将直接记录到 php.ini 文件中所定义的错误日志中。而后面两段则是将内容发送到一个邮箱中。

这个函数的声明形式是:

error_log string $message [, int $message_type 0 [, string $destination [, string $extra_headers ]]] ) : bool
  • $message,错误信息内容,文本形式
  • $message_type,错误发送到何处,默认0系统日志文件,1为发送到 $destination 定义的邮件地址,3发送到 $destination 定义的邮件地址并且 $message 不会被当作新的一行,4发送到SAPI的日志处理程序中
  • $destination,一般为邮件地址
  • $extra_headers,额外的邮件头,在 $message_type 为1时有用

这个函数需要注意的一点是, $message 内容不能有 null 或者其他可能截断字符的符号。所以我们的测试代码中,发送 error_get_last() 内容时我们不仅给他转成了 json ,而且还加了一层 base64 编码,这样才能保证内容的正常发送。

以上就是关于“PHP中的错误处理函数有哪些”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/u/4580631/blog/4362101

php
AI

开发者交流群×