PHP常见错误,我认为主要分为3块:
## 1、语法错误
`Parse error: syntax error, unexpected T_VARIABLE in E:\gstbook\user.php on line 268`
一般是少分号,在上一行或者下一行都有可能
`Parse error: syntax error, unexpected '.' in F:\www\blog\article.php on line 100`
多个“.”,类似的还有多个“;”等等
`Notice: Undefined variable: a in ... `
使用了一个没有被定义的变量a
`Parse error: syntax error, unexpected T_ELSE in `
if else if else 句式逻辑错误
`Parse error: syntax error, unexpected $end in `
一般是大括号不匹配
`Parse error: syntax error, unexpected T_STRING in`
一般是忘了写句末分号
`Parse error: syntax error, unexpected T_PRIVATE in`
一般是private函数位置写到了调用自己函数的内部
`Warning: Invalid argument supplied for foreach() in `
foreach 的第一个参数必须是一个数组
`Warning: Wrong parameter count for a in `
函数参数个数不对
~~~
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at F:\www\blog\index.php:10) in F:\www\blog\incl?s\config.inc.php on line 10
Warning: annot modify header information - headers already sent by (output started at F:\www\blog\index.php:10) in F:\www\blog\incl?s\config.inc.php on line 12
~~~
session前面不能有输出,同意的cookie也是这样的
`Fatal error: Cannot redeclare `
函数已经定义过,不能重新再定义;类也不能同名
## 2、SQL语句错误
`Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in `
说明前面执行SQL 返回失败,一般可能是SQL语句错误 ,如分析不出来,可以Mysql_error () 看具体是哪个地方错了
`No database selected `
一般是没有连接数据库
`Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘root’@'localhost’ (using password: YES) in ….. on line 3Access denied for user ‘root’@'localhost’ (using password: YES)`
数据库用户名的密码错误
`Unknown database ‘cms07261′ `
数据库不存在
`Table ‘cms0726.test’ doesn’t exist `
表不存在
`Unknown column ‘abc’ in ‘field list’ `
字段不存在
`Column count doesn’t match val count at row 1`
sql语句中 字段值的个数比字段名个数不一样
## 3、模板错误
`Fatal error: Smarty error: [in message_list.html line 22]: syntax error: ‘foreach: item’ must be a variable name (literal string) `
foreach 后面的item 后面必须跟一个变量名,不加$,是一个字符串
`Fatal error: Smarty error: [in admin/tpl/class_detail.html line 14]: syntax error: unrecognized tag: cs.st?nt_id (Smarty_Compiler.class.php, line 436) in D:\www\web\xmphp\inc\smarty\Smarty.class.php on line 1088`
smarty语法错误:循环数组的时候,少$
`Warning: Smarty error: unable to read resource: “message_list1.html” in `
模板文件找不到,看是否是文件名写错或文件存放到别的目录中去了。
`Fatal error: Smarty error: [in order_detail.html line 171]: syntax error: unclosed tag \{elseif} (opened line 157). (Smarty_Compiler.class.php, line 317) in F:\www\gstbook\xmphp\inc\smarty\Smarty.class.php on line 1088`
html页面语法错误,少结束标签<%/if%>
以后遇到问题,我会及时更新!
附上PHP错误报表:
序号代码错误报告
|1|error_reporting(Integer)|此设置是每个脚本默认错误报告设置。它的参数可以是这里列出的任意常量,表示所有错误的E_ALL或者类似E_ALL&E_NOTICE的一个逻辑表达式。|
|-|-|-|
|2|display_error(Boolean)|此设置控制错误是否作为PHP输出的一部分显示出来,默认设置是on。|
|3|display_startup_errors(Boolean)|此设置控制在PHP启动时是否显示错误,默认设置是off,而且是用来调试C扩展。|
|4|error_prepend_string(String)|这个字符串在浏览器中显示错误信息之前直接显示出来。|
|5|track_errors(Boolean)|当这个设置开启时,一旦一个错误出现,变量$php_errormsg在PHP作用域中被定义。这个变量包含错误信息。|
|6|html_errors(Boolean)|此设置控制是否在错误信息中采用HTML格式。默认情况下显示的是HTML错误,CLI版本的PHP除外。|
|7|xmlrpc_erroes(Boolean)|此设置控制错误信息是否启用作为XML-RPC故障显示。|
|8|xmlrpc_error_number(Integer)|这个XML-RPC故障代码是启用xmlrpc_errors时使用的。|
|9|log_errors(Boolean)|此设置控制错误是否记录。日志的地址是通过error_log设置决定的。默认情况下,错误被记录到Web服务器的错误日志中。|
|10|log_error_max_len(Integer)|此设置是当启用log_errors时控制记录的错误信息的最大长度。超过这个长度的信息也会被记录下来,但是会被截断。|
|11|error_log(String)|此设置决定错误记录的地方。在默认情况下,它们被传送到Web服务器的错误记录机制中,但必须指定一个文件名,或者指定Syslog让系统日志来记录。|
|12|ignore_report_errors(Boolean)|当启用它时,这个设置让PHP不在同一行中重复显示一样的错误信息。|
|13|ignore_repeated_source(Boolean)|当启用时,PHP将不显示与前一个显示的错误来自同一个文件同一行错误。如果它没有被启用,它就不起作用。
2 、PHP错误是通过错误级别进行划分的,范围从通告到严重错误,这个错误级别报告错误的严重性。大部分错误可以用常用的错误处理器来获取,但其中一些则不可恢复。
PHP错误级别表
|序号| 错误代码 |错误级别|
|-|-|-|
|1|E_ERROR|严重错误,不可恢复。例如内存不足、位置异常或类重复声明错误|
|2|E_WARNING|一个经常发生的错误类型。表示一些操作错误。例如丢失函数参数,连接数据库失败,除数为0等错误。|
|3|E_PARSE|编译时发生的解析错误,会导致在PHP执行前退出。意味着如果一个文件因为解析错误运行失败,程序将停止运行。|
|4|E_STRICT|错误级别是唯一不包含在E_ALL常量中。这是为了让PHP4到PHP5的迁移更加容易;你可以在PHP5软件系统中运行PHP4代码。|
|5|E_NOTICE|运行代码在操作一些未知的动作,例如读取为定义的变量。|
|6|E_CORE_ERROR|内部错误,扩展启动失败导致的,会导致PHP运行退出。|
|7|E_COMPILE_ERROR|编译错误,与E_PARSE不同,这个错误会导致PHP运行退出。|
|8|E_WARNING_ERROR|编译时的警告,可能是使用者发生语法错误。|
|9|E_USER_ERROR|用户定义错误导致PHP退出执行。用户定义错误(E_USER_*)不是来自PHP本身,而是包含在脚本中。|
|10|E_USER_WARNING|用户定义错误不会导致PHP退出执行。脚本可以使用它来通知一个执行失败,执行失败PHP也会用E_WARNING来通知。|
|11|E_USER_NOTICE|用户定义的通告可以用来在脚本中可能存在错误。|
- 序
- 前言
- 内容简介
- 目录
- 基础知识
- 起步
- 控制器
- 模型
- 模板
- 命名空间
- 进阶知识
- 路由
- 配置
- 缓存
- 权限
- 扩展
- 国际化
- 安全
- 单元测试
- 拿来主义
- 调试方法
- 调试的步骤
- 调试工具
- 显示trace信息
- 开启调试和关闭调试的区别
- netbeans+xdebug
- Socketlog
- PHP常见错误
- 小黄鸭调试法,每个程序员都要知道的
- 应用场景
- 第三方登录
- 图片处理
- 博客
- SAE
- REST实践
- Cli
- ajax分页
- barcode条形码
- excel
- 发邮件
- 汉字转全拼和首字母,支持带声调
- 中文分词
- 浏览器useragent解析
- freelog项目实战
- 需求分析
- 数据库设计
- 编码实践
- 前端实现
- rest接口
- 文章发布
- 文件上传
- 视频播放
- 音乐播放
- 图片幻灯片展示
- 注册和登录
- 个人资料更新
- 第三方登录的使用
- 后台
- 微信的开发
- 首页及个人主页
- 列表
- 归档
- 搜索
- 分页
- 总结经验
- 自我提升
- 进行小项目的锻炼
- 对现有轮子的重构和移植
- 写技术博客
- 制作视频教程
- 学习PHP的知识和新特性
- 和同行直接沟通、交流
- 学好英语,走向国际
- 如何参与
- 浏览官网和极思维还有看云
- 回答ThinkPHP新手的问题
- 尝试发现ThinkPHP的bug,告诉官方人员或者push request
- 开发能提高效率的ThinkPHP工具
- 尝试翻译官方文档
- 帮新手入门
- 创造基于ThinkPHP的产品,进行连带推广
- 展望未来
- OneThink
- ThinkPHP4
- 附录