PHP常见报错解析

  {错误类型}: {错误原因} in {错误文件} on {错误行数}

  说明了在哪个文件的哪一行中因何种原因出现了何种错误。

  常见的错误类型一般有下面几种:

  Parse error(解析错误)一般都伴随着Syntax errors(句法错误) ,说明你的程序不符合PHP的语法。

  它是级别最高的错误,整个脚本根本不会被执行。

  一般都是由一个表达式缺少";" 或各种括号引号不成对引起的。看详细的信息就能知道问题的所在。

  一般句法错误都会给你提示一个解析器代号,告诉你出现的问题是在哪里。比如:

  Parse error: syntax error, unexpected T_STRING in xxx.php on line 9

  T_STRING 是一个解析器代号,顾名思义,它代表字符串,很多错误原因都会带解析器代号。通过它你可以更直接的了解到错误的原因。

  unexpected意思是非预期的,换句话说也就是多余的。

  更多解析器代号请参考:http://www.php.net/manual/zh/tokens.php 或php手册 英文版中叫:List of Parser Tokens 中文版中叫:解析器代号列表

  上面的错误的意思是说你的第九行有一个非预期的字符串。

  我的代码:

  1-7: 略

  8 : test(array(‘a‘))

  9 : xxx();

  10 : >

  这个问题如何解决呢?把第九行的xxx删掉,的确符合PHP语法了。

  但是那不是我想要的,实际上是我的第8行缺少了一个";",解决办法是在第8行结尾加分号。

  注意:这个例子还说明了一个问题,错误报告说是哪行,问题不一定就非在哪行,也可能是它的前面一行或几行造成的。最典型的例子是某程序提示出错行数在 文件的最后一行,你去看,发现那行除了“>”以外没有别的字符,这种情况一般是缺少引号导致的。你要往前面找不成对的引号或者别的什么标点。如果你 非要抬杠,认准了行号不松口,那就不是php的问题了。

  Fatal Error(致命错误),仅次于Parsing Error的错误,执行到发生错误的行时,脚本会终止运行。

  在程序符合PHP语法的基础上,使用了未定义的函数,或require一个不存在的文件,死循环导致程序执行超时,都会导致fatal error。

  一般表现为:

  Fatal Error: Call to undefined function func() in php100.php on line 某某

  就是说在某某行你调用了一个未定义的func函数,这时候一般就是看你是否忘了包含该包含的文件,是否写错了函数名,是否写错了文件名。(PHP100.com)

  Warning(警告),比致命错误级别稍低,但程序不会因为脚本错误而终止。

  一般出现在include一个不存在的文件,或者一个程序需要一个参数,但是你没传参数,并且你也没指定参数的默认值。

  Warning视情况可以避免出现,实在没法避免,可以加@强行屏蔽。

  Notice(通知),级别最低,一般可以无视,不会影响到脚本的运行。多数发生在变量或数组下标未定义的情况。

  注意:多数notice都可忽略,但是少数的notice也可能会反映出比较严重的问题。

  比如 Notice: Undefined variable: sql in xxx.php on line xx

  你看到有个变量"sql"未定义,这就可能很危险了,在register_globals=on的情况下,没准这个错误直接就成为了别人操作数据库的后门。

  此外还有一些别的类型的错误,平时不常见,我就不多说了。

  总结

  综上所述,PHP的错误提示会告诉我们很多事情,为我们查找错误提供了极大的方便。好好利用它,会大大的提高我们的工作效率和工作质量。

  不过,它带来好处的同时,也可能会透露服务器的敏感信息,容易让攻击者发现服务器的漏洞。

  php开发环境一定要打开全部错误提示,打开错误显示。最大限度的减少事故的发生。

  生产环境千万要把错误显示关闭,改用日志来记录错误。别给有心人以可乘之机。

时间: 2024-11-17 07:05:44

PHP常见报错解析的相关文章

使用iis7.5搭建ASP网站常见报错问题处理

iis7.5 解析 ASP 出错主要有三类: 1. 权限问题 2. 程序问题 3. 应用池问题 1. 权限问题: 如果访问网站后有典型的无权查看报错提醒, 那么重新配置相关用户的权限即可, 最简单的办法是直接添加一 Everyone 用户, 给 Everyone 加读取权限即可, 此处操作简单, 不多赘述, 需要注意的是, 500报错也可能是权限问题, 请留意排错, 如图所见,                  2. 程序问题: asp程序不能正常解析, 此处主要问题来源有: a. asp未启用

cocos2d-js运行游戏常见报错

作为新手,参考官网案例自己再打一遍代码运行游戏时常会出现许多相同报错,有的是由于自己单词拼写错误,或者文件未加载等,在写代码的时候一定要细心细心再细心,下面是我这两天运行出现的一些报错及我的解决方法,多是自己搜索外带摸索总结的,有什么不对的敬请指正,当然,运行过程中也许会有各种问题,我这边也可能只是极少数,后续碰到的会继续更新,希望大家看到并可以解决的也可以共享下. 运行游戏常见报错: 1.loader for [null] not exists! 尝试方法:极有可能是加载什么类型的资源没有后缀

android开发_git操作中常见报错及解决办法

Focus on technology, enjoy life!-- QQ:804212028 浏览链接:http://blog.csdn.net/y18334702058/article/details/44624305 主题:git操作中常见报错 - 如果输入$ git remote add origin [email protected]:xxx(github帐号名)/yyy(项目名).git 提示出错信息:fatal: remote origin already exists. 解决办法

web报表工具FineReport使用中遇到的常见报错及解决办法(一)

FineReport使用中遇到的常见报错及解决办法(一) 这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己. 出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有.有报错要看日志.下面简单罗列下常见的问题,大多文档上都有提到的. 1.address pool is full: 含义:地址池满,连接数超过并发数上限. 解决办法: 若在FineReport的连接池属性的设置中,已将最大连接数设置得过大,还出现如上的报错,此时通常就是数据库进程(proc

java报表工具FineReport使用中遇到的常见报错及解决办法(一)

FineReport使用中遇到的常见报错及解决办法(一) 这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己. 出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有.有报错要看日志.下面简单罗列下常见的问题,大多文档上都有提到的. 1.address pool is full: 含义:地址池满,连接数超过并发数上限. 解决办法: 若在FineReport的连接池属性的设置中,已将最大连接数设置得过大,还出现如上的报错,此时通常就是数据库进程(proc

rabbitmq编译部署以及常见报错

(一)源码安装Erlang(1)下载erlang源码包wget http://www.erlang.org/download/otp_src_R13B04.tar.gz(2)解压缩erlang源码包tar -zxvf otp_src_R13B04.tar.gz(3)安装./configure??--prefix=/usr/local/erlang./make./make install如果抛出如下错误No curses library functions found请先安装?curses lib

Zabbix 常见报错

Zabbix 常见报错 一.zabbix web上出现Get value from agent failed: ZBX_TCP_READ() failed: [104] Connection reset by peer 1. Debug 过程: 1.1 在zabbix server 上使用get 命令时出现:1.2 查看zabbix_agent 日志出现failed to accept an incoming connection: connection from "28.44.20.129&q

ssh远程主机 常见报错处理

##ssh远程主机 常见报错处理 ###Q1:###Warning: Permanently added '192.168.3.201' (ECDSA) to the list of known hosts. ###Permission denied (publickey,gssapi-keyex,gssapi-with-mic). ####在远程主机上远行 sed -i 's/^PasswordAuthentication.*/PasswordAuthentication yes/g' /et

js常见报错之Unexpected token in JSON at position

源头 ??出现这个报错提示,根本原因只有一个--json解析异常,至于本文血案的导火索是因为json注释滴问题. 事发--血案 ??有一天一个朋友找我商量,说用jquery的ajax什么都写对了,可数据就是不正常显示,我说发核心代码我look下,如图1 ??我也反复检查了几遍确实没问题,那......我突然发现他的代码中只存在了异步success的回调,既然不走成功回调,那就看下error函数咯,error函数我们不经常使用,其有三个参数XMLHttpRequest对象, textStatus错