16 June 2020 Last updated on 05 November 2020

We are aware that you may receive an error when installing Akeeba Backup 7.2.x, Admin Tools 5.7.x or Akeeba Ticket System 3.4.x when you have an earlier version of any of our Joomla extensions installed on your site and a system plugin of said extension enabled on your site. This is a chicken and egg issue.

The error message looks something like:

Call to undefined method FOF30\Factory\BasicFactory::setScaffolding()

The short version is that you can safely ignore this error and retry the installation of the update.

What to do

If you already got this error: don't panic. There is nothing to worry about. Just retry the installation of the update.

If you would like to not see this error at all: download and install the latest available version of Akeeba FOF before you update any of our software.

Why does it happen

Our software is built using a PHP framework called Akeeba FOF. In order to add support for the upcoming Joomla 4 version we had to make major changes in how the framework operates. One of these changes was the removal of entire feature that we had stopped using in our software since 2017.

The root cause of the problem is that Joomla presents a chicken-and-egg problem. It loads system plugins before installing any extension or extension updates. System plugins of our extensions would partially load a part of the already installed FOF version called the Container. This provides the basic plumbing for our software to be able to find its files.

During the update the new version of FOF is being installed. However, due to the way PHP works, it's not possible to substitute the part of the previous version of FOF that has already been loaded by the system plugins. The next step of the installation tries to load a bit more of FOF, a part called the Installation Script Helper. As the name implies, this allows Joomla to ask our software if the current site meets the minimum PHP and Joomla version requirements.

When this happens we end up with a mix of a part of FOF that's stuck in an old version and a part that is loaded from disk and is up-to-date. This causes an internal discrepancy which leads in this error.

Because of the exact place the error takes places it does not cause any permanent damage to your site. It's just a nuisance. Trying to install the update once again does not throw this error because now the bit of FOF being loaded by the system plugin and what is loaded further down the installation process are the same version.

Unfortunately, there is no good workaround to deal with it because of how Joomla and PHP work. It's just not possible to tell Joomla to update FOF and then reload the page to install the update to our other software. It's not possible to tell PHP to reload the parts of FOF it has already loaded. And, of course, we couldn't just not change anything and pretend that Joomla 4 isn't a thing.

We are sorry about the inconvenience and the confusing error messages. We are unfortunately bound by the limitations of the platform our software runs on.