确保laravel与PHP5.6.x保持兼容

确保laravel与PHP5.6.x保持兼容,laravel,composer-php,php-7,php-5.6,Laravel,Composer Php,Php 7,Php 5.6,既然Laravel 5.5只支持PHP>7.0,我该怎么做才能确保它与5.6.x兼容?我在5.6环境中,升级PHP不是一个选项,我想确保composer update在开发环境中任何时候运行都不会破坏任何东西 从文章来看,降级似乎并不容易,所以我只想确保事情不会以某种方式被破坏 这是编写器条目/依赖项列表,laravel被指定为5.4.* { "require": { "php": ">=5.6.4", "laravel/framework": "5

既然
Laravel 5.5
只支持
PHP>7.0
,我该怎么做才能确保它与
5.6.x
兼容?我在
5.6
环境中,升级
PHP
不是一个选项,我想确保
composer update
在开发环境中任何时候运行都不会破坏任何东西

从文章来看,降级似乎并不容易,所以我只想确保事情不会以某种方式被破坏

这是编写器条目/依赖项列表,
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更新
,或者是否需要更仔细地调整
composer.json

还要注意的是,我的下一个项目需要是
PHP5.6
,我将从定制的laravel库中克隆,这里将有
“laravel/framework”:“5.4.*”,
,所以只要这样设置,我会很好吗

更新

为了回应@Eric Brown的回答和一些研究,我将主要依赖项(+
laravelcollective/html
)调整为:


接下来,我可能会使用Laravel/vendor文件的副本初始化一个新的git repo,然后将其放入一个新的目录中,我真的不想把它与子模块混在一起,这样可能会变成一个tarball,它可以与原始版本一起提交。

默认情况下,Laravel不会像那样升级到Laravel的新版本,因为,正如您所指出的,在composer.json文件中,
“laravel/framework”:“5.4.*”
指定laravel必须始终为5.4.0版本号。您不必太担心向后兼容性,但是如果您仍然希望接收关于潜在bug或漏洞的更新,请添加*而不是最后一个数字,例如4.3.*而不是4.3.1


此外,学习如何使用Github或Bitbucket等Git存储库并在其中存储当前版本也是非常有益的。它们非常适合于版本控制,并确保在开发或更新过程中不会出现太可怕的错误。这为我节省了很多时间。

你是否建议我将框架本身的“当前版本”存储在一个单独的repo中,例如
供应商
文件夹,例如从.gitignore中删除它,或者将整个
Laravel
文件夹另存为备份?您是否建议我将asterix添加到
tinker
collective
faker
中?是的,主要是因为在您的例子中,如果更新只使用PHP7,升级可能会导致出错,这是不可能的,但仍然可能的。如果更新出错,这只是增加了一层安全性。PHP5.6就是这样。在那之后,继续运行它将是危险和不负责任的。现在是开始计划迁移到PHP7的时候了。很好!这取决于公司。由于我无法控制这一方面,所以我所能做的就是为他们当前的infra提供一些长期稳定的东西,然后在他们决定升级时调整composer.json就足够容易了。我会在自述或类似的地方大胆地记下你的评论!确保源代码管理中包含您的
composer.lock
文件。它包括生成时安装的所有内容的精确版本,并允许您执行
composer安装
以安装这些精确版本。
composer更新
将使用新的包更新
.lock
文件,因此将其置于源代码管理中意味着您可以签出旧的
.lock
文件并再次降级到这些确切版本。谢谢,我今天早上就想到了这一点,这是我要做的第一件事。我将向该tarball添加锁文件和composer.json。
"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.*"
},