Reputation: 4299
Now that Laravel 5.5
supports only PHP > 7.0
, what can I do to ensure that I can keep it compatible with 5.6.x
? I am in a 5.6
environment, upgrading PHP
is not an option, and I want to make sure that composer update
will not break anything if its ran at any time in development environment.
Looking at articles it appears that downgrading is not easy, so I just want to make sure that somehow things don't get broken.
Here's the composer entry/dependency list, laravel
is specified as 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"
},
}
So, does this mean I can no longer run composer update
? Or am I still safe to update my other packages, e.g. the ones specified above, and laravel
will stay 5.4.36
?
I realize the specification in composer tells the package to stay in the 5.4.x
range, I just want to make sure, and also I'm worried that the dependencies might not be safe at staying backwards compatible? I'm wondering if I should just forget about composer update
for now, or if I need to more carefully adjust the composer.json
.
Also note, my next projects that I spin up, will need to be PHP 5.6
as well, and I will be cloning from a customized laravel-base here, which will have "laravel/framework": "5.4.*",
always, so will I be good as long as this is set that way?
Update
In response to @Eric Brown's answer, and some research on packagist, this is what I have adjusted the main dependencies (+ laravelcollective/html
) to:
"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.*"
},
I might init a new git repo with a copy of the Laravel/vendor files next, and then place this into a new directory, which I don't really want to mess with sub modules, so that may end up being a tarball instead, which can get commited with the original.
Upvotes: 2
Views: 2466
Reputation: 1462
By default, Laravel will not upgrade to newer versions of Laravel like that because, as you pointed out, in your composer.json file, the "laravel/framework": "5.4.*"
specifies that Laravel must always be version 5.4.some_version_number. You shouldn't have to worry about backwards compatibility too much, but if you still want to receive updates on potential bugs or vulnerabilities, add a * instead of the last number, such as 4.3.* instead of 4.3.1.
Also, it would be very beneficial to learn how to use Git repositories such as Github or Bitbucket and store a current version in there. They are perfect for version control and ensuring that nothing goes too horribly awry in development or updates. This has personally saved me more times than I care to count.
Upvotes: 1