Why EE2 sites can't wait
ExpressionEngine 2 reached end of life on 30 April 2017. It was written for PHP 5, and it can't run on any PHP version that still gets security fixes. Many EE2 sites survive on old servers kept back just for them, and those servers are now the riskiest part of the business. The October 2026 PHP security alert shows why that's not a safe place to be.
One jump, not five
Since EE 5.4, the updater can take an EE2 site directly to the current version. You don't install EE3, EE4 and EE5 in turn. The work that matters is:
- The new folder structure: your config, templates, language files and add-ons move into
system/user/, and themes intothemes/user/. - Add-ons: EE2-era field types and modules need updates or replacements. Matrix usually becomes native Grid, Playa becomes Relationships.
- PHP 8: any PHP in templates, plus custom add-ons, must run on PHP 8.2+.
Our legacy upgrade guide walks through each of these in detail.
What stays the same
Channels, entries, categories, members, template groups and URLs are upgraded in place. Visitors and search engines see the same site at the same addresses. Content stored by an abandoned add-on is the one exception, and we plan its move during the audit.
How it works
- 1
Audit
EE version, every add-on, PHP in templates, hosting. You get a fixed quote and a list of what will change.
- 2
Staging on modern PHP
A copy of the site on PHP 8.2 or 8.3 with its own database.
- 3
Restructure and update
Files moved into system/user/, then the updater run straight to EE7.
- 4
Replace add-ons
Updated, swapped for native fields, or rebuilt, with content migrated.
- 5
Test with your editors
Every template, form and channel checked, including by the people who use the control panel.
- 6
Launch
On upgraded or new hosting, in a quiet window, with the old site kept as a backup.