Veiking百草园


Laravel框架如何进行版本升级

程序员甲   @Veiking   2021-01-18

Laravel框架如何进行版本升级

摘要:

最近需要填一些漏洞,于是想着索性先把laravel框架升级至最新,这样可以避免很多隐患。除去各版本之间问题的差异性,想着基于composer的laravel版本升级,比较严肃,我们就稍微深入一点点,看看问题在哪里。最后也已经基本明确了:升级laravel的问题核心在composer.json文件;此外,像这种大的升级要注意提前阅读升级指南说明文档,评估升级的影响

背景

最近需要填一些漏洞,于是想着干脆一了百了,索性先把laravel框架升级至最新,这样可以避免很多隐患。

困惑

由于咱们一开始就是使用composer协助管理模块依赖,尝试了几个熟悉的composer指令之后,发现不能解决问题,于是网上搜升级教程,然后发现百度结果干辣,令人疑惑
很多结果是一本正经的照搬laravel升级指南,这个升级指南说明文档是laravel项目方发布的,侧重点讲的是新旧版本差异,新版本升级后需改动或注意事项等等。当然这个普遍需要也非常重要,但不是本次升级操作重点;
然后就是很多各种一句话说明,比如很多composer指令,不少前辈给出了如下操作建议:
如执行:composer require laravel/framework
或执行:composer update laravel/laravel
或:composer install laravel
……
当然,类似的建议题解很多,显然都解决不了实质性问题,并不能实现laravel版本的升级,这里也非常疑惑各位答主大神是怎么通过这些指令搞定的,哈哈哈。

看了很多操作建议之后,除去各版本之间问题的差异性,以及网上解决方案的随意性,想着基于composer的laravel版本升级,比较严肃的事情了,不应该如此凌乱不堪,我们就稍微深入一点点,看看问题在哪里。
既然我们使用的是composer来管理依赖,问题还是从composer来解决。

问题核心

想解绝laravel升级的问题,这里就不得不先搞明白composer相关的两个东西:composer.json文件和composer.lock文件。
composer.json文件是我们安装项目依赖的基础元数据,直白点理解,就是我们刚开始使用这个框架,或者必须依赖的这些个模块,都是以这个文件的描述为基础的;
composer.lock文件则是在以composer.json描述安装完成后,锁定这些依赖对应的特定版本,直白点理解,这个就是用来避免版本混乱和冲突的。
也就是说,我们在首次安装完laravel框架之后,之后的所有 require或update 操作,都是以composer.json文件描述为基础,以composer.lock文件约束为版本基础,进行安装或升级的
这就不难理解,为什么单纯的 require或update 的操作,即使键盘敲碎,也并不能实现laravel框架升级。
理解到这里,问题也已经基本明确了:升级laravel的问题核心在composer.json文件

问题解决

知道了基本原理,操作实施起来就比较简单了
我们打开composer.json文件,找到“require”处的“laravel/framework”,直接修改版本号到”^8.37”,
然后执行composer update进行更新
片刻之后,执行完毕
我们接着执行php artisan --version查看laravel版本
如无意外,我们即可以看到laravel版本已经成功升级至8.37
此外,升级之后还需参考对应版本的laravel升级指南,在程序上做出相应的调整和修改,避免程序报错、不能正常运行。

特别注意

类似于laravel框架的整体升级,可能会涉及一些其他模块的同步升级,需要在composer.json文件处做相应修改,避免各模块之间版本冲突引发问题;
像这种大的升级要注意提前阅读升级指南说明文档,评估升级的影响,避免升级之后程序代码的仓促修改,引起BUG等问题;
道理是早升级早超生,谨此个见。


程序员甲


潜影拾光

弘一法师

长亭外,古道边,芳草碧连天。

扫码转发

二维码
二维码
二维码
二维码
二维码
二维码

博文标签