PHPWPS

 找回密码
 立即加入

QQ登录

只需一步,快速开始

搜索
热搜: php discuz
查看: 9612|回复: 1

[PHP] thinkphp关闭调试模式导致出错的几种情况

[复制链接]

280

主题

420

帖子

1970

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1970
发表于 2015-5-31 17:16:44 | 显示全部楼层 |阅读模式
thinkphp的调试模式还是不错的,毕竟在开发过程中,那个地方有错误,看到错误信息就可以知道原因了。但是我们在正式投入生产的时候,需要关闭调试模式,毕竟调试模式需要引用更多的文件,占用更多的资源。

那么我们在关闭了调试模式之后,却有时候会遇到一些错误,并且这类错误,如果不注意,还真不知道问题出现在那里,毕竟在调试模式下是正常的。

下面就公布几种情况。
第一种:函数重名:与thinkphp的Controller类中的函数名称一样导致出错,这类错误,网上也有答案,直接更改自己写的代码中的函数名称即可。比如,如果你在程序用写了个show函数,那么你这个程序就没法运行了,会报错,Controller类的地址是/ThinkPHP/Library/Think/Controller.class.php


第二种:模型冲突。在模型中使用了tableName的就可能出现这种情况。比如系统中创建了lista表和listb表,分别被项目中的web和wap使用,而在web项目中,建立了list模型,通过tableName定义了数据表名lista,在wap项目中,建立了list模型,通过tableName定义了数据表名listb。那么这个时候就会出现问题了,如果你的这两个表的结构不一样的时候,在程序运行中就可能会出现字段缺失的错误。比如,你可以在Logs日志中看到有ERR: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'info' in 'field list'  这样的错误。
关于第二点,可以注意观察Data\_fields里面的文件,相信你已经明白了
回复

使用道具 举报

280

主题

420

帖子

1970

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1970
 楼主| 发表于 2015-9-4 11:14:59 | 显示全部楼层
第二种可以在配置中关闭字段缓存解决
  1.     // 关闭字段缓存
  2.     'DB_FIELDS_CACHE'=>false
复制代码

可以参考THINKPHP手册中的字段定义
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

QQ|小黑屋|手机版|Archiver|phpwps Inc. ( 鄂ICP备14011625号-1 )

GMT+8, 2025-5-4 15:59 , Processed in 0.054041 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表