I just wanted to share a positive perspective on Concrete upgrades across major versions.
I’ve been doing a lot of V8-V9 site upgrades lately, and they’ve all upgraded fairly easily, with the only code fixes needed being things for very old packages or really custom components.
But I did one yesterday where I went from 5.7, to V8, to V9, going from PHP5.6, to PHP7.4 to and then PHP8.2
My fixes to get this working were:
- I had to add a few
return [];
lines to my page_theme.php file. Those arguably should have been there in the first place. - I had to replace an old hacky form block, with an Express form. (the old form was only there because we needed info in between questions, something the express form now handles well)
And that was it.
But here’s the thing - I looked back at when I first deployed this site. It was something we pretty much set and forgot about. It was 2015.
So we were able to take a site that is nearly 10 years old, and upgrade it to be on the very latest version of Concrete, and on a recent PHP version.
The theme we had originally built was fairly simple, but still looks modern, so our client is going to get several more years out of the site.
10 years is an eternity as far as web-technology goes, so it goes to show how good the 5.7 structure and approach was as a long-term plan.
Whilst I’m posting, I’ll add that my general advice is:
- for minor updates, after a backup, they should nearly always work on server. Just set your PHP memory limit to be a bit higher, and set a longer script timeout (like a few minutes instead of 30 seconds)
- for major versions, try doing the upgrade on a test server or locally, where you can change PHP versions and debug without fear. When a site can have add-ons from all over the place, custom code from developers that didn’t write correct code in the first place, and enormous databases, trying to do a major upgrade live without a test run is just risky.
- I prefer the ‘swap the core folder out’ upgrade approach, instead of the one run through the Dashboard, but that’s mostly because I then don’t fill up the webspace with unused copies of Concrete.