PHP学习入门之PHP错误处理
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学习之php配置09-09
php学习入门方法09-09
php学习之php预定义变量09-16
PHP入门学习方法09-05
PHP基础入门09-06
php关于PHP上传入门学习知识点09-16
php入门小知识09-18
PHP语法入门知识09-04
php语言基础入门09-04
php基础入门知识09-03