【发布时间】:2018-04-11 16:40:27
【问题描述】:
既然Laravel 5.5 只支持PHP > 7.0,我可以做些什么来确保它与5.6.x 保持兼容?我在5.6 环境中,升级PHP 不是一种选择,我想确保composer update 在开发环境中随时运行时不会破坏任何东西。
看文章似乎降级并不容易,所以我只是想确保事情不会以某种方式被破坏。
这里是 composer 入口/依赖列表,laravel 被指定为 5.4.*
{
"require": {
"php": ">=5.6.4",
"laravel/framework": "5.4.*",
"laravel/tinker": "~1.0",
"laravelcollective/html": "^5.4.0"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~5.7"
},
}
那么,这是否意味着我不能再运行composer update?或者我仍然可以安全地更新我的其他软件包,例如上面指定的那些,laravel 将保留5.4.36?
我意识到 composer 中的规范告诉包保持在5.4.x 范围内,我只是想确保,而且我担心依赖项在保持向后兼容时可能不安全?我想知道我是否应该暂时忘记composer update,或者我是否需要更仔细地调整composer.json。
另外请注意,我启动的下一个项目也需要是 PHP 5.6,我将从这里的自定义 laravel-base 进行克隆,它总是有 "laravel/framework": "5.4.*",,所以我会很好只要这样设置?
更新
针对@Eric Brown 的回答,以及对packagist 的一些研究,这就是我将主要依赖项(+laravelcollective/html)调整为:
"require": {
"php": ">=5.6.4",
"laravel/framework": "5.4.*",
"laravel/tinker": "1.0.*",
"laravelcollective/html": "5.4.*"
},
"require-dev": {
"fzaninotto/faker": "1.7.*",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "5.7.*"
},
接下来我可能会使用 Laravel/vendor 文件的副本初始化一个新的 git 存储库,然后将其放入一个新目录中,我真的不想弄乱子模块,所以最终可能会成为一个tarball 代替,它可以与原始文件一起提交。
【问题讨论】:
-
PHP 5.6 是no longer actively supported and will receive security updates for only one more year。在那之后,继续运行它将是危险和不负责任的。 现在是开始计划迁移到 PHP 7 的时候了。
-
好点!这取决于公司。由于我无法控制这方面,我所能做的就是为他们当前的基础设施提供一些长期稳定的东西,然后当他们决定升级时调整 composer.json 将很容易。我会在自述文件或类似的地方大胆地注明您的评论!
-
确保您的
composer.lock文件包含在源代码管理中。它包括生成时安装的所有内容的确切 版本,并允许您执行composer install来安装这些确切版本。composer update将使用新软件包更新.lock文件,因此将其置于源代码控制中意味着您可以检出旧的.lock文件并再次降级回这些确切版本。 -
谢谢,今天早上我就想到了,这是我要做的第一件事。锁定文件和 composer.json 我将添加到该压缩包中。
标签: laravel composer-php php-7 php-5.6