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
当然,你也可以直接修改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。它们可以提供代码执行过程中涉及到的函数调用,包含文件,哪个类,文件第几行,这些对调试非常有用的信息。
学习一门语言,要从学习如何处理,调试错误的代码开始,掌握好错误处理,对调试,对代码安全赵向阳是至关重要的。
-
tp搜索时首页分页和搜索页保持条件分页的方法
在做搜索查询时突然发现在首页用的`分页代码在搜索页使用时出现错误,首页分页代码(代码中标注start与end部分为分页代码),下面是由本站小编为大家整理的Thinkphp搜索时首页分页和搜索页保持条件分页的方法,喜欢的可以收藏一下!了解更多详情资讯,请关注应届毕业生...
-
PHP学习入门的一些基础知识
导语:PHP是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。下面我们来看看PHP学习入门的一些基础知识,希望对大家有所帮助。一,PHP脚本代码标记PHP的脚本是文件中一对特殊标记所包括的内容,如ASP是“”,PHP可看...
-
PHP中用CURL伪造IP来源的方法
PHP中用CURL伪造IP来源的.方法,有需要的朋友可以看看。就跟随本站小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕业生考试网!1.文件复制代码代码如下:<?php$ch=curl_init();curl_setopt($ch,CURLOPT_URL,"http://localhost/");curl_setopt($ch,CURL...
-
PHP时间和日期函数怎么操作
php函数的多样化和功能相近真是一大特点,同一个应用可以用多种函数实现,这恐怕也是开源的一个弊端了;通过对PHP时间函数的系统学习,充分理解了时间戳和时区的概念(这个真的很重要),有需要的小伙伴可以参考下。PHP中所有函数都是UNIX纪元的,即从1970年1月1日开始的。日...