0

我的帖子

个人中心

设置

  发新话题
php编程时难免会遇到一些错误,调试错误虽然不是一门高深的学问但是有效的查找却很重要。
基本策略应遵循一下原则:
1)出现错误,判断错误出现在那个环节。
2)判断出错原因,估计错误出现的位置
3)查找错误根源
4)对错误进行修改,首先要先备份 ,别弄的错误越改越多。
5)对修改后的代码进行测试。
手段:
1)增加中间变量或者跟踪变量。例如输出一行代码或者输出一些相关变量来发现错误根源;
2)注释掉部分代码 (排除法),当无法测试出错误根源的时候,就使用排除法 ,先注释掉一下代码,然后运行查看错误是否依然存在。如果仍然存在则继续注释。
3)同过调试器来单步调试,这样可以跟踪整个程序的执行过程。发现是否有些应该被执行的代码没有被执行。或者变量赋值错误等各种导致错误的原因。
常见错误分享:
1。语法错误:
1)缺少分号。
在编写代码的时候由于某个语句或者变量的结尾处没有使用“;”,从而导致程序出错;

Parse error: syntax error, unexpected T_ECHO in D:\jworkServer\wwwroot\blog\login.php on line 4
2)缺少单引号或者双引号
Parse error: syntax error, unexpected $end in D:\jworkServer\wwwroot\blog\login.php on line 7
3)缺少关键字或者逻辑结构
例如没有写while条件
Parse error: syntax error, unexpected ';', expecting T_WHILE in D:\jworkServer\wwwroot\blog\login.php on line 14
4)缺少括号
出错在程序的最后一行 而且其并没有错误,就很可能哪里缺少括号了
Parse error: syntax error, unexpected ';' in D:\jworkServer\wwwroot\blog\login.php on line 15
5)缺少美元符号$;
2.语义错误
例如:
$e=$a+$b+$c;
而在php中的连接符是“。”而不是“+”,没有得到预期的结果;
3。注释错误
对于程序来说注释是很重要的,特别对后期的修改和维护更是至关重要。在程序中使用了错误的注释,虽然不会影响其运行,但对修改产出影响
例如:
<?php
//循环出$i,从0到50
   for($i=0;$i<50;$i++)
    {
    echo $i;
      }
?>
运行结果是01234。。。4849;但到后期维护时则认为是错误的 ,因为注释里的是到50,而实际是“大于等于0小于50的数字”
4)运行错误
如果运行中出现错误是个麻烦的事情,很难检测到错误出现在什么地方,同时也难以改正;
1)调用不存在的函数 例如你调用时把函数名写错了
Parse error: syntax error, unexpected T_VARIABLE, expecting ';' in D:\jworkServer\wwwroot\blog\login.php on line 15
  或者没有指定参数 例如
<?php
echo date(); //使用此函数得指定参数;
?>
则得到告警:
Warning: date() expects at least 1 parameter, 0 given in D:\jworkServer\wwwroot\blog\login.php on line 9

2)读写文件
访问文件的错误也经常出现
3)包含的文件不存在
<?php
include("abc.txt");
?>

告警:Warning: include(abc.txt) [function.include]: failed to open stream: No such file or directory in D:\jworkServer\wwwroot\blog\login.php on line 2

Warning: include() [function.include]: Failed opening 'abc.txt' for inclusion (include_path='.;C:\php5\pear') in D:\jworkServer\wwwroot\blog\login.php on line 2

Warning: Cannot modify header information - headers already sent by (output started at D:\jworkServer\wwwroot\blog\login.php:2) in D:\jworkServer\wwwroot\blog\login.php on line 3

4)运算的错误
如果出现不符合运算规则则出现错误:
<?php
$m=5;
$n=0;
$a=$m/$n; //0不能做除数;
echo $a;
?>
告警:
Warning: Division by zero in D:\jworkServer\wwwroot\blog\login.php on line 13

5。逻辑错误

逻辑错误时在语法上不存在的错误,但是从程序的功能是看是BUG,她是嘴难调试和发现的BUG,因为他不会抛出任何错误信息。唯一能看到的是程序的功能没有实现。对于逻辑错误而言,发现时容易的,但查找原因却很难。
例如:
<?php
$arr = array("php","abc","adsf");
echo $arr[1];
?>
运行结果为 abc;
但是开发者想输出的是php,忽略了数组时从0开始计算的

本帖最近评分记录
  • 老友 无忧币 +3 很实用 2010-5-14 15:11



本帖最后由 七彩极 于 2018-4-2 23:01 编辑
虽不学编程~但也用得到~
谢谢LZ



三思方举步,百折不回头。
:handshake lz的帖子很好啊  我正在学习php  对我很有帮助



一起学习进步才快!:handshake



顶上,用心了LZ



我是局外人,确很想跟你们学习!



感谢楼主分享,学习了哈。



提示: 作者被禁止或删除 内容自动屏蔽
好人啊 ~~



值得新手学习~!



宝剑厉不厉害,要看它的主人是谁,不信来PHP版块看看~!
提示: 作者被禁止或删除 内容自动屏蔽
对小白很友好,谢谢




‹‹ 上一贴:【教程经验】你的PHP/Laravel网站是否足够安全? ...   |   下一贴:【教程经验】解决应用服务器集群的Session问题 ... ››
  发新话题
快速回复主题
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 友情链接 |意见反馈 | 网站地图
Copyright©2005-2018 51CTO.COM
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系:bbs@51cto.com