PHP程序编译中常见错误信息分析及解释_第1页
PHP程序编译中常见错误信息分析及解释_第2页
PHP程序编译中常见错误信息分析及解释_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、php程序编译中常见错误信息分析及解释.txt如果我穷得还剩下一碗饭 我也会让你先吃饱 全天下最好的东西都应该归我所有,包括你!先说喜欢我能死啊?别闹,听话。 有本事你就照顾好自己,不然就老老实实地让我來照顾你!我们编写程序时,无论怎样小心谨慎,犯错总是在所难免的。这些错误通常会迷惑php编译器。如果开发人员无法了解编 译器报错信息的含义,那么这些错谋信息不仅毫无用处,还会常常让人感到沮丧。编译php脚本时,php编译器会尽其所能报告它遇到的第一个问题。这样就产住一个问题: 只有当错误出现吋,php才能将它识别出来(本文后面对此问题进行了详细描述)。正是由丁 这个缘故,编译器指出出错的那行,从

2、表血上看來可能语法正确无误,或者可能是根本就不 存在的一行!更好地理解错谋信息可以人人节省确定并改正错谋内容所花费的时间。因此,在木文屮,我 将努力阐明多种不同类型的php报错信息,以及在开发过程中如何匸确理解各种报错信息的 含义。木文中所讲述的内容与您所应用的php的版本无关,因为本文所描述的各种错误并不限定于 某一特殊版本的特定错谋。另外我们假定您是一位初级或者屮级程序员,并已经从事编程工 作有半年或一年的吋间。编译器的工作方式要搞清楚编译器为什么会报告某一行上存在错谋,首先必须明确编译器解析php代码的机制。 我并不打算在本文中対此进行详细论述,但是,我们将会讨论一些更易于引发错误的简单

3、概 念。变罐声明如果在一条语句中声明一个变量,具体方式如下所示:$variable = ' value* ;编译器首先求出语句右半部分的值(即等号右边的所有内容)。在一些编程书籍中,将此表示 为语句的rhs (右半部分)。恰恰正是语句的这一部分常常会引发错误。如果使用的语法不正 确,就会岀现解析错谋。解析错误parse error:解析错误, unexpected t while in c:wprogram filesapache groupapachehtdocsscript. php on 1ine 19每次确定了前一错误时,解析错课一个接一个地不断出现。因为piip在第一个解析错

4、误之后 就停止执行脚本,调试并纠正这一系列的错误往往会让人觉得特别厌烦。而解析错误具冇很少的信息,儿乎不报告错误所在的行号。具体原因就是当出现错误时, 编译器判定好几行的语法看起来应该是侑效的,肓至遇到无效的语法,最可能的情形就是表 达式中使用了预定义的字词,例如;wh订e = 10; / bad ? while就是一个预定义字词,不能分配给一个值预定义的字词包括while、function等,如來php使用uses to evaluate your code.您 不能使用这些预定义字词来命名变屋,而如果您非要这样做的话,php就会报出更多的错 误,这是您无法忍受。关于这个问题,下血的示例可能

5、会対您有所帮助。请咨询阅读一卞下面所示的php代码:$b = somevalueif($b = somevalue)print hello world!;?>错误位于$1)二-行(在语句的末端缺少分号),所以错课应该是解析错误:笫3行缺少分号对吧?而不应该依据解析器判定的:parse error: parse error, unexpected t_tf in c:program filesapache groupapachehtdocsereg2. php on line 4在笫4行,if()语句的语法是正确的。那么,编译器是被什么给搞糊涂了呢?线索就是 unexpected t_if

6、部分。出现unexpected t_?错课时,它所表示的含义为:编译器发现在 预定义字不应该出现的位置出现。t_1f代表if(), t.wh1le代表whileo, t_for代表 for ()等。值得庆幸的是,一些错误的原因也很简单:语句没有使用分号(;)结束,比如上面的示例。字符串屮缺少引号。其他一些常见的错谋我见过的最常见的错误就是,当没冇使用大括号()结束一个函数或者一个循环时出现的错 误,这很可能是最常见,最让人烦的错误。具体代码如下:function uselessfunction() for($i < 0; $i < 10; $i+)将产生下列错误:parse err

7、or: parse error, unexpected $ in c:wprogram filesapache groupapachehtdocsereg2. php on line 9由于函数uselessfunction没有使用人括号()来结束,php编译器不断杏找表示结束的 大括号直至到达文件末尾为止。因为编译器未找到一个匹配的大括号,就会报告文件末尾处 有错误。如果正确地反映了代码的层次结构,错误信息就会变得非常明显。如果没有标明代码的层次 结构,那么最后耍想查清楚到底忘记了什么也会变得几乎是不可能的。所以,请记住,一定 要标明代码的层次结构。tab键可以很容易地实现这一点。对示续的开

8、发人员来说,把握代 码框架并对其进行修改也会更容易一些。mysql错误另一极其令人讨丿犬的错误信息就是授常见的mysql错误,这常常使piip新手感到颇为头疼: warning: supplied argument is not a valid mysql result resource in.上而所报告有错的一行可能是:while($row = mysql_fetch_array($resu1t) 参数$result并不是一个有效的资源。在英语中它表示因为杳询失败,将无法处理 mysql_fetch_array。任一查询的语法无效(您应该将查询复制-粘贴到mysql控制台参考來 进行测试),或者与数据库的连接失败(这种情况卜-您应该再次检查用户名和口令等)。 防止错误发生第一步,智能代码器可采取以下儿步来消除下列错误出现:在每一条语旬的末尾处,不必考虑添加分号这应该成为一种习惯。总是要尽可能标明代码的层次结构,这可以使您能够查看是否忘记在if调用或函数末端 等位置添加大括号。请使用可突出显示语法的编辑器(如html-kit)。有了这类编辑器的辅助,您就能确定是 否忘记了添加引号,是否缺少分号等。结论木文我们对php编译器可报出的一些看

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论