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

Posted

技术标签:

【中文标题】将 Laravel 5.4 升级到最新版本 (5.7)【英文标题】:Upgrading Laravel 5.4 to latest version (5.7) 【发布时间】:2019-03-21 19:26:29 【问题描述】:

我正在使用 php 版本 5.6.4 开发 Laravel 5.4。 我的目标是使用 PHP 7.1 将我的项目升级到 Laravel 5.7。

现在我的问题是:我必须升级到 5.5 > 5.6 > 5.7 还是可以直接从 5.4 升级到 5.7?

【问题讨论】:

【参考方案1】:

有一些关于文档的文章。您可以直接升级到 5.7,但请务必从此链接 5.5->5.6、5.6->5.7 修改关键部分。并先备份当前项目

【讨论】:

【参考方案2】:

最好先升级 5.5,然后再升级 5.6 和 5.7,因为如果您在 5.5 和 5.6 升级指南中看到,有些软件包也需要升级,所以您最好一步一步进行。

5.4 to 5.5 5.5 to 5.6 5.6 to 5.7

老版本可以看

5.3 to 5.4 4.2 to 5.3

【讨论】:

【参考方案3】:

在我看来,逐步升级会有所帮助。这有助于查看您的应用程序是否已经兼容所有需要进行的更改。

如果您直接升级到 5.7 并且由于更改而面临更大的问题,您最快的选择是再次降级到 5.4。

如果您在第一步升级到 5.5,您可以让您的应用程序兼容 5.5,对其进行彻底测试、部署,然后开始测试升级到 5.6 需要做什么。

【讨论】:

【参考方案4】:

只需在您的 composer.json 文件中将您的 laravel/framework 依赖项更新为 5.7.*。由于您是从 5.4 升级到 5.7,所以您可以轻松运行

composer update

如果您在 5.4 应用程序中修改了 Laravel 的一些特征或方法,那么您可以check here 了解更多信息

【讨论】:

【参考方案5】:

只需在composer.json 文件中将您的 laravel/framework 依赖项更新为 5.7.*

"require": 
    "php": "^7.1.3",
    "fideloper/proxy": "^4.0",
    "laravel/framework": "5.7.*",
    "laravel/tinker": "^1.0"
,

之后,在命令提示符下运行此命令:composer update

您将取得成功,您的 Larvael 将更改为5.7 版,更多详情请访问upgrade guide

【讨论】:

如果我这样做,我会收到此错误Your requirements could not be resolved to an installable set of packages. 我有 PHP 7.1.20 @Michael 请分享您的composer.json 文件的代码 ....并分享确切的错误日志。最有可能的是,它会告诉你有冲突的包【参考方案6】:

不,你不应该一步一步升级,只有你可以这样做: https://laravel.com/docs/5.7/upgrade

【讨论】:

老实说,我不明白升级文档。我是否需要更改我的 composer.json 文件中的版本并进行作曲家更新?我需要更改 Laravel 框架的源代码吗?还是只是升级文档页面上的说明性信息? 没关系。你需要去 "composer.json" 并编辑 "laravel/framework": "5.4.*", 到 "laravel/framework": "5.7.*" 来升级 laravel。在你的命令行检查你的php版本之前。其他任务在文档页面中有一步一步的。如果您有任何其他问题,您可以给我发电子邮件,我会帮助你 您能否进一步解释为什么不应该逐步升级?恕我直言,这将有助于解决潜在的错误 @HamidNaghipour 请在此处运行所有通信,以便其他人可以使用它。如果您还有问题,请随时提出新问题 @NicoHaase 这是关于远程合作,而不是关于问题。好的,我删除了我的 cmets。【参考方案7】:

您可以在 composer.json 文件中将您的 laravel/framework 依赖项更新为 5.7.*。

1. composer.json 中的变化:

发件人:

"require": 
        "php": ">=7.0.0",
        "fideloper/proxy": "~3.3",
        "laravel/framework": "5.4.*",
        "laravel/tinker": "~1.0"
    ,

收件人:

"require": 
        "php": ">=7.1.3",
        "fideloper/proxy": "~4.0",
        "laravel/framework": "5.6.*",
        "laravel/tinker": "~1.0"
    ,

2。将 app\Http\Middleware\TrustedProxies.php 文件替换为以下内容:

<?php

namespace App\Http\Middleware;

use Illuminate\Http\Request;
use Fideloper\Proxy\TrustProxies as Middleware;

class TrustProxies extends Middleware

    /**
     * The trusted proxies for this application.
     *
     * @var array
     */
    protected $proxies;

    /**
     * The headers that should be used to detect proxies.
     *
     * @var string
     */
    protected $headers = Request::HEADER_X_FORWARDED_ALL;

3.作曲家更新

composer update

【讨论】:

你能解释一下为什么要替换一些任意文件吗? 那个升级指南毕竟没有提到TrustProxies。那么,你能解释一下吗? 由于 Symfony HttpFoundation 的受信任代理功能的底层更改,必须对应用程序的 App\Http\Middleware\TrustProxies 中间件进行轻微更改。 $headers 属性以前是一个数组,现在是一个位属性,可以接受几个不同的值。例如,要信任所有转发的标头,您可以更新您的 $headers 属性 请将此类信息添加到答案中,而不是评论部分。如果您复制和粘贴信息,请注明出处 - laravel.com/docs/5.6/upgrade 包含您最后的评论逐字逐句 是的,谢谢你..如果你有获取信息的链接,那么你为什么要问我妈妈?【参考方案8】:

用于更新 Laravel 6.x(这意味着 V6 的任何子版本) 只需运行此命令

cd [laravel installation directory]composer update

您的 VM 或 PC 上必须安装 composer。

仅适用于 Linux 用户:

Composer 目录必须为当前用户所有

//Check ownership
ls -la ~/ | grep ".composer"

//If you don't own the directory
chown -R [user]/[user] ~/.composer

在任何社交媒体上给我发消息@smitpatelx 如果您需要任何帮助或您的用例与上述不同,请发表评论。

【讨论】:

以上是关于将 Laravel 5.4 升级到最新版本 (5.7)的主要内容,如果未能解决你的问题,请参考以下文章

从 Laravel 5.3 升级到 Laravel 5.4 并且空字段转换为 NULL

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

升级到 laravel 5.4 后调用未定义的方法

Laravel 5.3 到 5.4 (mPdf - niklasravnsborg/laravel-pdf ) 升级问题

laravel 5.4 在邮件中嵌入图像

从 5.4 升级后的 Laravel 419 发布请求