查错秘籍—PHP大法

                                                         查错秘籍PHP大法

               ——与葵花宝典齐名

    偶突然发现自己老了,酱紫很难和大家沟通滴,所以特别翻译成大家能听懂的语言和大家交流,酱紫大家就都开心了。(总结只是俺自己闲暇之余的粗陋之作,错误之处,欢迎大家指正,求大神不要因为我写错了什么打我)。

——————————————我是分割线,请不要看我—————————————

错误大致分两类:第一种是你能看到的提示性错误,一般写在了页面上,比如浏览器上,sublime上等等;还有就是你看不到的错误,这类型没什么提示,完全是按着以往经验来查。

——————————————说了是分割线,你还看我—————————————

1.有提示错误的时候:

 童鞋们,有时候会碰上一些错误提示,但不知道如何解决该怎么办?

忠心的给出一些建议:

    当浏览器报错时,卸载浏览器;sublime报错时,卸载sublimeappache报错重装appachewindows出错了简单,重装windows。电脑坏了,我给你找把锤子。以上就是我的经验总结,感谢大家百忙之中观看……

——————————————请看我言归正传———————————————

好吧,言归正传!

a.网页提示错误:

  Syntax error

   语法错误。若果页面报错开头是这两个单词的话,很有可能是你自己在编写程序时语法错误。

  解决方法:

  第一步:看它末尾提示,比如是”line 11”,则表示是第11行或者第10行出错了。

  第二步:

       你敢保证,自己没有丢单词么?

       你敢保证,自己没有写错了什么?比如fuck”中少了”u”;

       你敢保证,上一行或者本行的分号不是中文格式么?或者是没有丢分号么?

       你敢保证,该加双引号的变量都加上了么?

       ……

Fetal error

致命错误。

Fetal error:引起这种错误的可能有两种。

第一种:在一个复杂的程序中, 偶然出现内存不足就会导致fatal error

第二种: fatal error 出在MySQL类中fetch的时候.

解决方案:

   PHP异常处理中 可以通过set_error_handler来捕获. 但是却只能捕获

 NOTICE/WARNING级别的错误, 对于E_ERROR是无能为力的。register_shutdown_function 能解决set_error_handler的不足。通过此函数注册好程序结束回调函数, 就可以捕获平时捕获不到的错误了. 再通过 error_get_last 对错误进行判断. 就容易找出难以定位的问题了.

例子:

<?php

function shutdown_function()  

{  

    $e = error_get_last();    

    print_r($e);  

}

register_shutdown_function('shutdown_function');  

?>

 Notice

        错误:

         PHP Notice:  Undefined variable  未定义变量

         PHP Notice:  Undefined index 未定义索引

  看看吧,这些变量你都没有定义就在使用了。赶紧回去加点什么或哪里还需要再改改。

  如果还是不行的话:

   解决方案:

      秘法一:在报错行之前加@,可以屏蔽某一行错误。

      秘法二:在PHP页面中加入如下代码,可以屏蔽一大堆notice(显示所有错误不显示注意),你懂得。

             error_reporting(E_ALL || ~E_NOTICE);

            缺点是:若果页面中出现大量notice,其结果是影响php程序的性能。

Warning

  警告。

解决办法同上。

      法一:好吧,加@”。

      法二:error_reporting(E_ALL || ~E_WARNING);

提示:大家把”notice””warning”中的方法忽略了吧,毕竟我们就是干这个的,职业道德不允许我们一错再错。除非我们是要先测试性能。

Parser error:

JS中的错误。可能是结构不对。

b.Sublime报错:这个相对简单。不要问我什么错误,看左下角对应查单词。还有.”报错。

  不过还有点注意的是,你的错误不一定是错在本行。

  具体应该有几大错误类:

1)可能是本行错误,比如语法错误(丢了字母,变量不存在神马的)。

2)可能是上一行的错误,比如你丢了个分号等等。

3)可能是结构性错误,比如你在使用if(){}else{}语句时大括号没丢吗?抑或是大括号   包含的内容范围包对了吗?

c.Edditplus

如果你用的是EdditPlus编辑器,出错了怎么办?

小编推荐:您把代码Ctrl+C粘贴到Sublime中,让它帮我们报错,让我们先喽一眼,是不是很神奇。愚蠢的人类在我面前颤抖吧!

d.Cmd提示错误:

  有些人,自己的浏览器报错了语法错误了,却非要上cmd来找,我替cmd伤心呐,因为这无异于要找个男孩子帮你传宗接代!

  Cmd报错在我们目前所学的最多的地方是MySQL(你确定非要到火星上找你的 男/女朋友 吗?)

e.Appache错误:

  Appache无法重启:语法错误,可能是虚拟主机Virtual-host中设置错误。

  dos(也就是cmd)界面中输入Httpd -t 对应查找。

如果不是虚拟主机配置错误的话,可能需要重启Appache;如果重启还是失败的话,就重启电脑(这一招有时候蛮灵的)。

2.无提示错误

这种时候,像我们这种新手就开始迷茫了,错误不知道如何解决?

不要怕,我来帮你分析。

第一:你没有写错,不要再找单词错误了。

第二:你开始找以下几种错误了。

首先,可能是比如ifelse…语句{}这类型带括号的括错地方了。

其次,检查是否有语句使用错误,比如某个变量放错了地方,某个变量根本就不用写,或某个函数你调用了吗?还有如echo”这样的输出语句你输出的变量可能是你已声明的其它变量……等等。

还有:在php中也可以简单的使用echo语句和exit()函数进行试探性的查找。走到那一块不运行了,就在那里查找对应的错误。

JS中常用document.write()alert()方式来进行对应查找。

 

原文地址:https://www.cnblogs.com/yumingzhao/p/8629002.html