如何将 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.1phpunit/phpunit 依赖于 ^8.5facade/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() 函数不起作用

如何将 App\Exceptions 从 laravel 7 升级到 laravel 8

将 Laravel 5.5 升级到 5.6 错误

将 Laravel 5.4 升级到最新版本 (5.7)

如何将我的 laravel 5.0 项目直接升级到 5.4?