The site was running on Joomla version 3.9 with PHP 7.4 (PHP is the language in which Joomla! is written).
At the time of the upgrade, the latest version of Joomla was 5.4 with PHP 8.3.
Today, Joomla and all its extensions run on PHP 8.3, but Joomla 3.9 does not run on PHP 8.3.
Therefore, it was impossible to update from 3.9 to 5.4.
A migration was necessary; a long and complex process that involves going first through version 4.4.14 of Joomla, a pivotal version that works with both PHP 7.4 and 8.1.
To keep the site running during the upgrade, I worked on an existing development copy (J3).
At each stage of the process, I took backups.
Along the way, I discovered that the production site and the development site shared the same database, which caused me a lot of problems.
The Process
1. Upgraded to Joomla 3.10.12
3. In J3, upgraded to Joomla 4.4 and PHP 8.1 with many problems
a. Several incompatible extensions had to be deactivated
b. The existing template is not supported; I had to install a new one. To maintain the same look as the old site, I decided to build a template that looks like the existing one. I used a tool called "Template Creator CK"
c. To use PHP 8.1, I created a redirect in the production site that takes the user to the J3 site.
d. Upgraded to Joomla 4.4.14 under PHP 8.1
- The database structure is different
- Joomla now uses "Smart-Search" instead of "Search"
i. Many of the old extensions did not work including "Drop Down Article" and "Search". I had to go to the Joomla Forum to find solutions. In the case of “Search”, I had to manually delete entries in the database to remove the older versions that hadn't been deleted during the conversion.
ii. Installed compatible versions of existing extensions (JCE, SigPlus, Akeeba, etc.).
iii. Problem with translations; contacted FALANG, who were very helpful.
Among other things, with Falang, you must disable "Smart Search-Content" and replace it with "Smart Search Falang-Content."
iv. Several links were broken after the conversion; I had to fix them manually.
3. To upgrade to Joomla 5.4, I created a new copy of the site called "Sand".
I want to have three sites:
1. Production (current site, directed to J3)
2. J3 (version that has been upgraded to Joomla 4.4)
3. Sand (copy of J3 where I will upgrade to Joomla 5.4 with PHP 8.3)
The goal is to have a functional copy of the site with Joomla 5.4 under PHP 8.3 on Sand, create a copy of that in production, and remove J3.
Ultimately, there would be the production site and a development site, both up to date with the latest versions of Joomla and PHP.
4. The "Restore" function from J3 in Sand doesn't work! I wasted a lot of time on this, contacted FUNIO, and finally, someone from technical support sent me a link that contained the solution; to make it work, I had to downgrade to PHP 8.0. Once the restore was in place, I reverted PHP to 8.3.
5. In Sand, I upgraded to Joomla 5.4
a. Checked the extensions again, but this time things went quickly and smoothly.
b. The site works but gives an incorrect error message during translations.
6. Fixed the last problem by reindexing "Smart Search".
7. Enabled the automatic updates offered by Joomla 5.x.
8. In Akeeba, created two different profiles for backups, one for Production and the other one for Sand and took backups.
9. Deleted from the server the old site and all copies of previous backups
10. Downloaded copies of the Backups to a local computer.
