thinkphp怎么升级
发布时间 - 2019-08-26 00:00:00 点击率:次thinkphp版本升级的相关介绍,以5.0升级到5.1为例:
先看看5.0总的目录结构:
project 应用部署目录 ├—application 应用目录(可设置) ├—extend 扩展类库目录(可定义) ├—public WEB 部署目录(对外访问目录) ├—runtime 应用的运行时目录(可写,可设置) ├—vendor 第三方类库目录(Composer) ├—thinkphp 框架系统目录
再看看5.1总的目录结构:
www WEB部署目录(或者子目录) ├—application 应用目录 ├—config 应用配置目录 ├—route 路由定义目录 ├—public WEB目录(对外访问目录) ├—thinkphp 框架系统目录 ├—extend 扩展类库目录 ├—runtime 应用的运行时目录(可写,可定制) project 应用部署目录 ├—application 应用目录(可设置) ├—extend 扩展类库目录(可定义) ├—public WEB 部署目录(对外访问目录) ├—runtime 应用的运行时目录(可写,可设置) ├—vendor 第三方类库目录(Composer) ├—thinkphp 框架系统目录 ├—vendor 第三方类库目录(Composer依赖库)
通过第一层目录我们可以看到5.1只是多了config和route目录,说明5.1版本已经把配置文件和路由器文件给提取出来了。
下边我们以wstmart开源商城系统作为例子来尝试升级一下。
首先我们通过git导出最新的thinkphp5.1框架:
我们运行一下看看结果出现:
导入开源商城wstmart代码。
相关推荐:《ThinkPHP教程》
我们把wstmart开源商城wstmart目录下的wstmart剪切到tp5目录下,修改一下index.php文件,让项目直接在系统根目录下运行,再接着修改一下数据库配置文件和打开调试功能,运行一下:
嗯?!!居然出错了?赶紧翻翻文档看看。文档再往下拉看看,嗯?好吧。原来我太心急,没有看完,如果是从新定义入口文件的话就不能直接把原来指向public目录的index.php文件简单的拿过来用,还要定义一下应用的目录,例如:Container::get('app')->path(APP_PATH)->run()->send();其中APP_PATH就是要定义的应用的目录,我再改改为:
Container::get('app')->path(__DIR__ . '/wstmart/')->run()->send();运行看看:
终于正常了。之所以会出现这个结果是因为我没有修改配置文件,告诉系统默认的模块为home,我再修改一下app.php文件的 'default_module' => 'home',运行看看:
嗯?这个就又是什么情况?文件明明存在啊!!!仔细核对文件,确实存在啊...一定是5.1还有一些精华的地方我又看漏了,于是又返回看文档。来回扫荡,来回扫荡,终于在升级指导上到有这么一句话:“如果你自定义了应用类库的命名空间,需要改为设置环境变量APP_NAMESPACE而不是应用配置文件,如果你使用了.env配置文件,可以在里面添加:APP_NAMESPACE = 你的应用类库根命名空间名”。原来如此!!
于是在系统下建立一个.env文件。内容文:app_namespace=wstmart
再运行看看:
这段话是说这个函数没有找到。在thinkphp5.0框架里,系统会自动加载目录common下的文件,在5.1里边怎么不会自动加载了?于是我再翻翻thinkphp5.1的源代码看看。看到有这么一行:
未定义的数组下边?这么诡异的问题?
从下边的出错提示,我们可以定位到模块home的index.php文件调用的函数getFloors里去,出错提示是代码:
$rs = Db::name('goods_cats')->where(['dataFlag'=>1, 'isShow' => 1,'parentId'=>['in',$ids],'isFloor'=>1])
->field("parentId,catName,catId")->order('catSort asc')->select();出了问题。我们再翻文档看看。文档上说:
改变了查询构造器的数组多字段批量查询,从原来的
where(['name'=>['like','think%'], 'id'=>['>',0],])
需要调整为
where([['name','like','think%'], ['id','>',0],])
我们参照上边的说明把代码修改为:
$rs = Db::name('goods_cats')->where([['dataFlag','=',1], ['isShow','=',1],['parentId','in',$ids],['isFloor','=',1]])
->field("parentId,catName,catId")->order('catSort asc')->select();果然这个错误就不在出现了。接下来是另外一个问题:
参看文档,在thinkphp5.1中这个函数已经修改了。我们把thinkRequest改成thinkFacadeRequest,错误又消失了。
下边是错误:
系统能运行到这里,说明程序已经能接收并成功返回信息了。在页面上的这个错,应该就是自定义标签wst:ads里边出错,导致没有内容返回了。我们按照上边的排错方法继续回去调试原来是升级时候忘记配置标签了。我们打开template,加上代码'taglib_pre_load' => 'wstmartcommonTaglibWst',然后再刷新一下页面:
又是熟悉的错误,不过这次是其他函数,对于已经找到解决办法的错误,我们很容易就解决,这样就不再累述了。基本上都是修改model里的查询函数就可以了。按照前边的办法改完之后,我们就可以完成Thinkphp 5.0到5.1的升级了。
因为篇幅有限,我就不再一一截图调试,大家升级之前要熟读thinkphp官方的升级指导,避免像我一样一个坑一个坑的填,才终于完成升级。
# thinkphp
# 类库
# 配置文件
# 文档
# 我再
# 第三方
# 如果你
# 开源
# 自定义
# 多字
# 就可以
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何注册花生壳免费域名并搭建个人网站?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
Python3.6正式版新特性预览
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
JavaScript如何实现类型判断_typeof和instanceof有什么区别
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
利用vue写todolist单页应用
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
Python正则表达式进阶教程_复杂匹配与分组替换解析
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
如何在万网自助建站平台快速创建网站?
油猴 教程,油猴搜脚本为什么会网页无法显示?
zabbix利用python脚本发送报警邮件的方法
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
黑客如何利用漏洞与弱口令入侵网站服务器?
如何用景安虚拟主机手机版绑定域名建站?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
如何在云指建站中生成FTP站点?
Android GridView 滑动条设置一直显示状态(推荐)
详解jQuery中的事件
Laravel如何实现用户密码重置功能?(完整流程代码)
如何快速重置建站主机并恢复默认配置?
🚀拖拽式CMS建站能否实现高效与个性化并存?
java中使用zxing批量生成二维码立牌
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
IOS倒计时设置UIButton标题title的抖动问题
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
北京企业网站设计制作公司,北京铁路集团官方网站?
nodejs redis 发布订阅机制封装实现方法及实例代码
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
Laravel如何配置Horizon来管理队列?(安装和使用)
如何快速生成高效建站系统源代码?
网站制作壁纸教程视频,电脑壁纸网站?
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
微信小程序 配置文件详细介绍
如何正确下载安装西数主机建站助手?
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】


or 第三方类库目录(Composer依赖库)