Upgrading to Joomla 3.8, 3.9, 3.10 and 4.0

Since the release of Joomla 3.8 in September of 2017, the Joomla community has been preparing for two major technical upgrades: moving from PHP 5.6 to 7.x and from Joomla 3.x to Joomla 4.0. PHP 5.6 will cease to get security updates after December 31, 2018, while PHP 7.0 will cease to get security updates after December 3, 2018, so it is imperative that webmasters move their sites to PHP 7.1 or 7.2 in November, 2018. Similarly, the security fixes in Joomla 3.8.13, make it wise to get to at least that software level as of this writing and move to 3.9 and subsequently 3.10 as soon as possible. All of these upgrades have higher than normal testing requirements; this article aims to help with preparation for these migrations.

Joomla 3.8 included a number of changes to provide support for Joomla 7.x and is required in order to upgrade to PHP 7.1 or PHP 7.2.

Moving to Joomla 3.8

Because of the changes to support PHP 7.x, Joomla 3.8 ended up requiring changes to many templates, template frameworks and extensions. Moving early, as I did, required a lot of work, but today most vendors have updated everything so there is not much work required. Here are the steps for upgrading to Joomla 3.8:

  • Backup Joomla
  • Update your template framework. If there are no updates after September 2017, you will probably be forced to change templates and template frameworks.
  • Update your template. If there are not template updates after September 2017, you will probably be forced to change templates.
  • Update your extensions.
  • Update Joomla.
  • Test.

You will probably find that some things are broken. If so, you may need to replace functionality with a different extension, as most extensions that have support have already fixed any problems related to the upgrade to Joomla 3.8 and the related upgrade to PHP 7.x.

Moving to a New PHP Level

Most web hosting firms use CPanel to provide a graphical user interface (GUI) for system administrator. CPanel introduced MultiPHP support that allows each shared host to run a different PHP level and configuration which makes it possible to move to more recent software in an orderly way. If you have a Virtual Private Server (VPS), you have a lot of control over how PHP packages are provisioned, but if you are on a typical shared host you do not. Doing some research on your current configuration before starting. With this in minde, here are the suggested steps to migrate to a higher PHP level:

  • Verify that you are on at least Joomla 3.8.
  • First do research to identify the PHP modules that you need.
    • Look at the PHP requirements for Joomla, and make a list of the PHP packages are listed in Technical Requirements. “Zlib support” means that the Zlib PHP module mod_zlib must be installed. Make a list of all of the modules that Joomla requires. Do not forget mod_ssl for HTTPS support.
    • Look at the PHP requirements for the Joomla extensions that you use. Some may require PHP Exif support for image metadata, other Joomla extensions my have other unique requirements.
    • If you have a VPS, list the modules currently selected.
  • Provision the new PHP release in the EasyApache section of CPanel
    • If you have a VPS, use the list of PHP modules that you need to provision the new level of PHP.
    • If you do not have a VPS, you will need to call your hosting firm’s technical support to have them confirm that the various modules have been included.
  • In Cpanel, set the php.ini file values for the new PHP level to match the values in your current configuration.
  • In CPanel, use MultiPHP to change PHP levels.
  • Test. If you have problems, turn on debugging in the Joomla configuration to see some of the error messages. It may take two or three tries to get all of the PHP modules that you need.

Moving to Joomla 3.9, 3.10 and 4.0

Moving to Joomla 3.9 required another round of template and template framework updates for all sites along with updates to a number of extensions. Otherwise, this was an uneventful upgrade.

Moving to Joomla 3.10 is planned to be an uneventful upgrade as it is intended to be a transitional release to provide security fix support for two years while site owners and developers fix and test extensions on 4.0. Although 4.0 has some new function, most of the changes are updates to outdated and unsupported dependency libraries; it is likely that a lot of extensions will need maintenance to work with new levels of the various libraries. See the article Potential Backward Compatibility Issues in Joomla 4. In any case, do not move to 4.0 without testing extensively first.