PHP错误总结

作为一个php的初学者,学习php遇到了很多困难。

下边我们来看一下PHP初学者尝尝遇见的报错总结:

一:语法错误(致命错误,程序终止)
错误提示1
Parse error: syntax error, unexpected $end in D:\wamp\www\bangyang\08\tmlog\index.php on line 190
 这个错误显然在最后一行 这个标签怎么会有错误呢、显然是其他原因的错误 提示显示的是有syntax error(语法错误); 还有一点就是说的是$end 出现这个变量大部分不是由于这个变量引起的(代码中就没有这个变量) 这里提示说的是 由于匹配问题。  
原因:1、可能是由于使用tab时 在英文状态下输入了”  ` ” 怎么样 不注意看 是看不到的吧 呵呵 (在选中全文的时候会出现一小白点)
原因:2、在php标签中少了“ ;” 当然这是半角符号  
原因:3、由于匹配问题  “{    }”这两个符号少一个,造成不匹配 。 强烈建议一开始写代码是就匹配好 然后再在里面嵌套代码 要不这个错误 是很容易被忽视的!
原因:4、可能是php版本的问题  建议尽量用  …………   ?>这种标准的写法   像这样“    ?>”的php标识符 在很多情况下是没有错误的,但是不排除PHP版本的原因由于使用这个标识符而报错。  这是很难发现的毛病 因为他显示的也是加重色的,似乎没错误
错误提示2
Parse error: syntax error, unexpected '}' in D:\wamp\www\lianxi\1.php on line 8
又是语法错误(syntax error一般都会以为unexpected '}' ” 好像是’}’的毛病 其实不是的 
原因1:由于你最靠近’}’的一个“ ; ” 被你漏掉了 
原因2:有时候确实是“}”的原因
错误提示3
Parse error: syntax error, unexpected T_BREAK, expecting ',' or ';' in D:\wamp\www\lianxi\1.php on line 7
原因1:缺少了“ ;” or “,”……导致循环 或者程序中断 一定要仔细看一下。
原因2:“, ,“间缺省值了  只要查查“ , ”的前后一般是没问题的

错误提示4

Parse error: syntax error, unexpected T_VARIABLE in D:\wamp\www\lianxi\1.php on line 2
原因1T_VARIABLE 提示的是变量问题 看看你的变量吧  到底是什么原因 是多“;” “$”“,”……  还是少“;”“,”   还是半角跟全角的符号问题这都是基本的细节!只要养成好习惯,这些都可以避免!

二:警告错误(运行时的错误,不终止程序,但某些功能没有执行成功)
错误提示5

Warning: Wrong parameter count for imagecolorallocate() in D:\wamp\www\php5\image.php on line 12
原因1:是由于imagecolorallocate()这个画图函数出了毛病, 少了“,”这样的符号  或者其他原因
原因2:少了参数int imagecolorallocate ( resource image, int red, int green, int blue) 很多函数都会出现这种问题 写函数时多注意了 
错误提示6
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\wamp\www\php5\image.php:6) in D:\wamp\www\php5\image.php on line 7
原因1:有时候只用在   ?>中写代码 就行 没必要在要这些标签 能简练就简练吧 代码越简练 执行效率 会越高  
有时候图像不显示 也是由这些html代码造成的 ,一定要细心。

原因 2session_start()前已经有东西“already sent”。像session_start()一定要在代码头最前面发送,在此前面不允许有其他的任何信息发送  像标签里的等等也不能在之前发送放到最前面后你就可以随便写html代码了……

原因3headers之前有其他的输出。

原因4:编码没有去除BOM(关于BOM,简单的来说,软件通过BOM来识别这个文件是否是UTF-8编码。在Firefox早期的版本里,扩展是不能有BOM的,不过Firefox 1.5以后的版本已经开始支持BOM了。现在又发现,PHP也不支持BOMPHP在设计时就没有考虑BOM的问题,也就是说他不会忽略UTF-8编码的文件开头BOM的那三个字符。所以一定要选择utf-8BOM格式编码)

三:MySQL错误(MySQL Error
错误提示Warning:Supplied argument is not a valid MySQL result resource in...上面所报告有错的一行可能是:while($row=mysql_fetch_array($result)){}参数$result并不是一个有效的资源,因为查询失败,将无法处理mysql_fetch_array。任一查询的语法无效或者与数据库的连接失败,应该到MySQL控制台进行测试。

[ps:有时候sql语句不起作用,对数据库操作失败 最简便的调试方法,echo那句sql,看看变量的值能得到不 ]

四:注意错误(NOTICE错误。无关紧要的提示,可以屏蔽掉。

例如:

gettype($a);

这条语句,会产生注意的提示,即提示没有声明变量。但是程序会继续往下执行。

 注意: 开发阶段一般开启所有的错误报告,为的是调试程序使其尽量的少错误。当程序投入使用时,即关闭不必要的错误提示,例如少量的notice啊,因为如果不关闭的话,对不懂技术的用户则会觉得你的页面真乱,没有做好,懂技术的特别是黑客的话,则会通过的暴露的错误路径找到你的重要文件,实施破坏(通过配置文件中的display_errors=off,则可以不输出)。但是错误报告还是要输出给维护人员看的,所以我们可以把错误输出到错误日志中(首先在配置文件中把日志错误log_error=on 开启,并设置最大日志错误长度。):

     1.若在配置文件中没有指定错误日志的路径,则默认写在web服务器的日志里面,即在apachex.x/logs/error.log里;

     2.在配置文件中指定error_log指定一个文件名,比如指定把error_log=filename 改为:error_log=c:/error.log

     3.写入操作系统日志中,即开启配置文件中的error_log=syslog。(win中的日志在:我的电脑--右键--管理--系统 工具--事件查看器--应用程序)

 

     还有就是,别人的配置文件和你的配置文件对于错误报告的处理方式可能不一样,所以在你的机子的环境中不出现错误报告,看似完美,但是在别人的机子环境中则可能出现报告。

     例如:你的php.ini配置文件对于错误的处理方式是:error_reporting=E_ALL^E_NOTICE,即在你的机子上不显示注意,即使有许多的注意提示。但是别人的机子上的配置环境如果是:error_reporting=E_ALL,你写的所谓完美的程序在人们的机子上则是不堪入目,因为隔几行就会出现一个notice

     比如说你是虚拟主机的用户,不具有对服务器配置文件的更改权限,但是又想改变一些配置的话,还有另外的一种方法。

即在全局文件中用特定的函数来定义错误或者其他的配置。

     这个特定的函数就是:error_reporting()

     可以这样写:error_reporting(E_ALL &^E_NOTICE),这样就不必顾忌配置文件的不同了~

你可能感兴趣的:(php,php)