首页 > 编程知识 正文

thinkphp能直接用吗,Php71升级php73

时间:2023-05-05 01:23:29 阅读:163997 作者:2227

关于thinkphp版本升级的介绍,例如从5.0升级到5.1 :

首先,让我们看一下5.0的整体目录结构。 这是项目APP应用程序部署目录

- APP应用目录(可设置) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )

—extend扩展类库目录(可定义) ) ) ) ) ) ) )。

—公共web部署目录(外部访问目录)。

- runtime APP的运行时目录(可写、可配置) )。

—vendor第三方类库目录(Composer ) )。

—thinkphp框架系统目录

5.1看看总的目录结构。 www WEB部署目录(或子目录)

APP目录

配置APP应用程序配置目录

-根定义目录

(公共web目录(外部访问目录) ) ) )。

—thinkphp框架系统目录

—扩展类库目录

—运行时APP的运行时目录(可写、可定制) )。

project APP应用程序部署目录

- APP应用目录(可设置) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )

—extend扩展类库目录(可定义) ) ) ) ) ) ) )。

—公共web部署目录(外部访问目录)。

- runtime APP的运行时目录(可写、可配置) )。

—vendor第三方类库目录(Composer ) )。

—thinkphp框架系统目录

—vendor第三方类库目录(Composer依赖库) ) ) ) ) ) )。

从第1层目录中可以看到,5.1只是增加了config和route目录,而5.1版则提取了配置文件和路由器文件。

这里以wstmart开源模块系统为例尝试升级。

首先,通过git导出最新的thinkphp5.1框架。

运行并查看结果:

引入开源商城wstmart代码。

wstmart将开放源代码模块wstmart目录下的wstmart剪切到tp5目录下,修改index.php文件,使项目直接在系统根目录下运行,然后将数据库配置文件

诶? 是不是搞错了? 我赶紧翻文档看看。 要不要把文档往下拉? 好吧。 我没有着急看,如果是新定义入口文件的话,本来就不能把指向public目录的index.php文件直接拿来使用。 此外,请定义APP应用程序的目录,例如container33603360get(app )-path (app_path ),其中app _ path是要定义的APP应用程序的目录。 更改为container:get(app ) )-path ) _dir_.)/wstmart/)-run )-send )

请尝试执行:

终于正常了。 之所以会出现这个结果,是因为没有修改配置文件,而是告诉系统默认模块是home。 再次修改app.php文件中的' default_module'='home ',然后尝试运行。

诶? 这又是什么情况? 明明文件是存在的! 仔细检查文件的话,确实存在啊.肯定5.1还有精华的地方,所以又看漏了,再回去看文件。 来回扫荡和扫荡,终于在升级指导中有了这样的话。 “如果定制了APP应用程序类库的命名空间,则必须改为设置环境变量APP_NAMESPACE,而不是APP应用程序配置文件。 如果使用. env配置文件,则可以在bmddx中添加“APP_NAMESPACE=您的APP应用程序类库的根名称空间名称”。 原来如此!

在系统下创建. env文件。 内容: app_namespace=wstmart

再次尝试执行:

这句话是说找不到这个函数。 thinkphp5.0框架会自动加载目录common下的文件,但5.1为什么不会自动加载呢? 因此,我再次尝试翻遍thinkphp5.1的源代码。 有一行是这样的:

在未定义的数组下? 这么可疑的问题吗?

您可以从以下错误消息定位到从模块home的index.php文件中调用的函数getFloors : 错误消息为$RS=db33603360name(Goods_cats ()-where ) )数据标志()

-field(parentid,catName,catId )-order ) ) catsortASC )-select );

发生了问题。 让我们看看文档。 根据文档:

更改了查询生成器的数组多字段批量查询。 原始where(['name'=['like ',' think%'],' id'=[ ',0],) )

需要调整为where。 [['name ',' like ',' think%'],['id ',',',',0]]

参考以上说明,将代码写入$RS=db:3360name(Goods_cats )-where(['dataflag ','=',1],['isShow ','=',1 )

-field(parentid,catName,catId )-order ) ) catsortASC )-select );

果然这个错误不再出现了。 还有一个问题:

参考文档时,thinkphp5.1中修复了此函数。 我们把thinkRequest更改为thinkFacadeRequest,错误又消失了。

以下是错误:

到目前为止,系统正在运行,表明程序可以接收信息并正常回复。 页面上的这个错误应该是自定义标签wst:ads发生了错误,内容没有返回。 我们用上面的错误方法继续返回调试。 升级的时候忘记配置标签了。 打开template,添加代码' taglib _ pre _ load '=' wstmartcommontaglibwst ',然后刷新页面。

又是一个很熟悉的错误,这次是其他函数。 对于找到解决方案的错误,很容易解决。 那样的话,就不会累了。 基本上修改一下model的查询函数就可以了。 用前面的方法更改后,我们可以完成从Thinkphp 5.0到5.1的升级。

因为篇幅有限,所以不要逐个截图调试。 大家在升级之前熟读thinkphp官方的升级指导,免得像我这样补不上一个洞,才算完成升级。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。