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。它们可以供应代码实行过程中涉及到的函数调用,包含文件,哪个类,文件第几行,这些对调试非常有用的信息。
学习一门措辞,要从学习如何处理,调试缺点的代码开始,节制好缺点处理,对调试,对代码安全赵旭日是至关主要的。
感谢阅读,如有谬误,欢迎示正!