将 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.3 到 5.4 (mPdf - niklasravnsborg/laravel-pdf ) 升级问题