最新消息:

PHP学习入门之PHP错误处理

PHP xingliankeji 61浏览 0评论

PHP语言语法和C语言相似,有C语言基础的学习起来难度应该不大。在调试PHP代码时,你是否有过一脸闷逼的看着白屏而不知所措的经历?学习一门新的语言,最重要的是要掌握它的错误处理,调试的方法。PHP提供了一批错误处理函数,来帮助我们调试,处理程序中出现的错误。

首先,要了解一下PHP中关于错误处理的配置指令

error_reporting

这个指令用来设置报错等级。它的值可以是整数也可以是PHP内置的表示错误等级的常量,具体可以参考PHP手册。

display_errors

是否要显示错误信息作为输出的一部分输出到屏幕。它的值可以是布尔值,也可以是stderr,stdout.

display_startup_errors

这个指令主要是作调试用途。因为即使display_errors指令设置为真,部分错误也不会显示。它的值是布尔值。

log_errors

这个指令决定将PHP的错误信息是记录到服务器日志还是error_log指定的目标。

现在我们来了解一下PHP提供的错误处理相关函数

我在调试代码的时候喜欢在代码前面加上两行:

error_reporting(E_ALL);

ini_set(‘display_errors’,1);

ini_set(‘display_startup_errors’, 1);

这两行代码影响的就是PHP关于错误处理相关配置指令中的error_reporting和display_errors 这两个配置指令。它将显示所有的错误信息到屏幕。但是有时候我们可能会发现这个不起作用啊,这是什么情况?

我总结一下,有这几种情况:

第一,你碰到的可能是语法错误。由于PHP是解释型语言,因为语法错误了,代码得不到执行(语法通不过,来不及执行),那么运行时修改配置就达不到了,你通常会看到空白屏,这个时候,你可以通过命令行来检查一下代码的语法。如:

php -l phpfilename.php

当然,你也可以直接修改php的配置文件的display_erros指令和error_reporting指令,这样你就可以看到错误信息提示了。

第二,你如果是在一个框架或一个开源的系统,比如zend框架,或open cart开源商城系统。这两行代码修改的配置指令,在框架代码中可能被重新修改配置过了。通常一个成熟的框架和开源系统出于安全或其它因素都会通过set_error_handler来修改PHP的默认错误处理机制。那么,你最好使用他们的调试排错机制来调试。

现在来认识一下重要的set_error_handler函数。它的作用是向PHP注册用户自定义的错误处理函数。需要注意的是,一旦注册了自定义的错误处理函数,PHP的错误处理就会被跳过,error_reporting函数设置将没有作用,而是由你的函数来处理错误,决定代码是否继续执行,除非你的错误处理函数返回false。所以,有时候你会明明加了那几行代码,但是没看到任何错误提示。

restore_error_handler函数则是将错误处理交还给PHP。

另外两个要特别提到的对调试非常有帮助的函数是debug_backtrace和debug_print_backtrace。它们可以提供代码执行过程中涉及到的函数调用,包含文件,哪个类,文件第几行,这些对调试非常有用的信息。

学习一门语言,要从学习如何处理,调试错误的代码开始,掌握好错误处理,对调试,对代码安全赵向阳是至关重要的。

感谢阅读,如有谬误,欢迎指正!

转载请注明:PHP学习 » PHP学习入门之PHP错误处理

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址