首先,要理解一下PHP中关于缺点处理的配置指令

error_reporting

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

php换一批PHP进修入门之PHP毛病处置 Docker

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。
它们可以供应代码实行过程中涉及到的函数调用,包含文件,哪个类,文件第几行,这些对调试非常有用的信息。

学习一门措辞,要从学习如何处理,调试缺点的代码开始,节制好缺点处理,对调试,对代码安全赵旭日是至关主要的。

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