登录  /  注册
首页 > php框架 > ThinkPHP > 正文

thinkphp怎么升级

爱喝马黛茶的安东尼
发布: 2019-08-26 09:37:02
原创
5549人浏览过

thinkphp怎么升级

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框架:

1566781701(1).png

我们运行一下看看结果出现:

1566782225231782.png

导入开源商城wstmart代码。

相关推荐:《ThinkPHP教程

我们把wstmart开源商城wstmart目录下的wstmart剪切到tp5目录下,修改一下index.php文件,让项目直接在系统根目录下运行,再接着修改一下数据库配置文件和打开调试功能,运行一下:

1566782250100392.png嗯?!!居然出错了?赶紧翻翻文档看看。文档再往下拉看看,嗯?好吧。原来我太心急,没有看完,如果是从新定义入口文件的话就不能直接把原来指向public目录的index.php文件简单的拿过来用,还要定义一下应用的目录,例如:Container::get('app')->path(APP_PATH)->run()->send();其中APP_PATH就是要定义的应用的目录,我再改改为:

Container::get('app')->path(__DIR__ . '/wstmart/')->run()->send();
登录后复制

运行看看:

1566782278788782.png

终于正常了。之所以会出现这个结果是因为我没有修改配置文件,告诉系统默认的模块为home,我再修改一下app.php文件的 'default_module' => 'home',运行看看:

1566782362391998.png

嗯?这个就又是什么情况?文件明明存在啊!!!仔细核对文件,确实存在啊...一定是5.1还有一些精华的地方我又看漏了,于是又返回看文档。来回扫荡,来回扫荡,终于在升级指导上到有这么一句话:“如果你自定义了应用类库的命名空间,需要改为设置环境变量APP_NAMESPACE而不是应用配置文件,如果你使用了.env配置文件,可以在里面添加:APP_NAMESPACE = 你的应用类库根命名空间名”。原来如此!!

于是在系统下建立一个.env文件。内容文:app_namespace=wstmart

再运行看看:

1566782395610678.png

这段话是说这个函数没有找到。在thinkphp5.0框架里,系统会自动加载目录common下的文件,在5.1里边怎么不会自动加载了?于是我再翻翻thinkphp5.1的源代码看看。看到有这么一行:

1566782415990510.png

未定义的数组下边?这么诡异的问题?

从下边的出错提示,我们可以定位到模块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();
登录后复制

果然这个错误就不在出现了。接下来是另外一个问题:

1566782442450506.png

参看文档,在thinkphp5.1中这个函数已经修改了。我们把thinkRequest改成thinkFacadeRequest,错误又消失了。

下边是错误:

1566782470994436.png

系统能运行到这里,说明程序已经能接收并成功返回信息了。在页面上的这个错,应该就是自定义标签wst:ads里边出错,导致没有内容返回了。我们按照上边的排错方法继续回去调试原来是升级时候忘记配置标签了。我们打开template,加上代码'taglib_pre_load' => 'wstmartcommonTaglibWst',然后再刷新一下页面:

1566782122(1).png

又是熟悉的错误,不过这次是其他函数,对于已经找到解决办法的错误,我们很容易就解决,这样就不再累述了。基本上都是修改model里的查询函数就可以了。按照前边的办法改完之后,我们就可以完成Thinkphp 5.0到5.1的升级了。

因为篇幅有限,我就不再一一截图调试,大家升级之前要熟读thinkphp官方的升级指导,避免像我一样一个坑一个坑的填,才终于完成升级。

以上就是thinkphp怎么升级的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号