如何将 laravel 6 升级到 7
Posted
技术标签:
【中文标题】如何将 laravel 6 升级到 7【英文标题】:how to upgrade laravel 6 to 7 【发布时间】:2020-06-16 14:25:30 【问题描述】:我正在尝试将 laravel 6 升级到 7,出现错误。
our requirements could not be resolved to an installable set of
packages.
Problem 1
- Conclusion: remove laravel/framework v6.0.3
- Conclusion: don't install laravel/framework v6.0.3
- laravel/ui 2.x-dev requires illuminate/console ^7.0 -> satisfiable by illuminate/console[7.x-dev, v7.0.0],
laravel/framework[7.x-dev].
- laravel/ui v2.0.0 requires illuminate/console ^7.0 -> satisfiable by illuminate/console[7.x-dev, v7.0.0],
laravel/framework[7.x-dev].
- Can only install one of: laravel/framework[7.x-dev, v6.0.3].
- don't install illuminate/console 7.x-dev|don't install laravel/framework v6.0.3
- don't install illuminate/console v7.0.0|don't install laravel/framework v6.0.3
- Installation request for laravel/framework (locked at v6.0.3, required as ^6.0) -> satisfiable by laravel/framework[v6.0.3].
- Installation request for laravel/ui ^2.0 -> satisfiable by laravel/ui[2.x-dev, v2.0.0].
【问题讨论】:
查看laravel.com/docs/7.x/upgrade 当然,升级指南 是了解更改内容的实际位置。但我会谦虚地建议Shift 作为如何升级 Laravel 的答案。 【参考方案1】:按照文档操作,你一定已经安装了php7.2.5
将您的 laravel/framework 依赖项更新为 composer.json 中的 ^7.0 文件。
此外,将您的 nunomaduro/collision 依赖项更新为 ^4.1,
phpunit/phpunit 对 ^8.5 的依赖,
外观/点火到> `^2.0
之后作为下一步。
应用程序的App\Exceptions\Handler
类的报告和渲染方法应该接受Throwable 接口的实例,而不是异常实例:
use Throwable; // add this line
public function report(Throwable $exception); // replace Exception with Throwable
public function render($request, Throwable $exception); // replace Exception with Throwable
运行之后
composer update
【讨论】:
这对我将 V6.20 升级到 7.30 有用【参考方案2】:更新以下包
"nunomaduro/collision": "^4.1",
"phpunit/phpunit": "^8.5",
"laravel/ui": "^2.0",
"facade/ignition": "^2.0",
"laravel/framework": "^7.0",
为了更清楚,请转到Guide
如果 Handle.php 文件错误请查看Solution
【讨论】:
我为我的作曲家添加了点火,然后编辑了句柄,它对我有用,谢谢【参考方案3】:根据 Laravel 文档从 laravel 6
升级到 laravel 7
在
composer.json
中将您的laravel/framework
依赖项更新为^7.0
文件。此外,将您的nunomaduro/collision
依赖项更新为^4.1
、phpunit/phpunit
依赖于^8.5
,facade/ignition
依赖于 `^2.0。
然后在终端中运行 composer update
composer update
https://laravel.com/docs/7.x/upgrade
【讨论】:
【参考方案4】:laravel 7.0 需要 PHP 7.2.5。检查文档
https://laravel.com/docs/7.x/upgrade
【讨论】:
【参考方案5】:如果您对此有任何疑问,请务必提前阅读本节内容并进行必要的更改。我发现我必须在 composer.json 中进行更改才能使其正常工作。从命令行开始,它一直在变化:
身份验证
脚手架 影响的可能性:高
所有身份验证脚手架已移至 laravel/ui 存储库。如果你使用 Laravel 的认证脚手架,你应该安装这个包的 ^2.0 版本,并且这个包应该安装在所有环境中。如果您之前将此包包含在应用程序的 composer.json 文件的 require-dev 部分中,则应将其移至 require 部分:
作曲家需要 laravel/ui "^2.0"
【讨论】:
【参考方案6】:您可以按照下面的视频/说明链接将您的 Laravel 6 项目升级到 Laravel 7:-
https://youtu.be/8gyAkicohsU
【讨论】:
【参考方案7】:我正在处理现有代码,在/app/Exceptions/Handler.php
中的 5.8 版上是这样的:
public function report(Exception $exception)
parent::report($exception);
我将 use Exception;
更改为 use Throwable;
并进行了此更改
public function report(Throwable $exception)
parent::report($exception);
在将每个 Exception
更改为 Throwable
并更新所有依赖项和语言版本后,它就可以工作了。
【讨论】:
以上是关于如何将 laravel 6 升级到 7的主要内容,如果未能解决你的问题,请参考以下文章
从 laravel 6.x 升级到 laravel 7.0 时出错
将 Laravel 从 5.6 升级到 6.0 后,调用未定义的 str_random() 函数不起作用