Support

Akeeba Backup for Joomla!

#34708 55 - FOF3.0 is not installed

Posted in ‘Akeeba Backup for Joomla! 4 & 5’
This is a public ticket

Everybody will be able to see its contents. Do not include usernames, passwords or any other sensitive information.

Environment Information

Joomla! version
n/a
PHP version
n/a
Akeeba Backup version
n/a

Latest post by jfrewin5 on Wednesday, 03 March 2021 10:54 CST

jfrewin5

Please look at the bottom of this page (under Support Policy Summary) for our support policy summary, containing important information regarding our working hours and our support policy. Thank you!


EXTREMELY IMPORTANT: Please attach a ZIP file containing your Akeeba Backup log file in order for us to help you with any backup or restoration issue. If the file is over 2Mb, please upload it on your server and post a link to it.


Description of my issue:

I can't get into my site, (500 - FOF 3.0 is not installed) so I can't post Akeeba backup log file and not sure where to find it in my File Manager.

I think it happened during update to 8.0.0.

I've tried to reinstall FOF 3.0 file - no difference.

I've tried changing 'main.php' file to 'main-disabled.php' - no difference.

I've tried reinstalling an old backup with 'kickstart.php' and a jpa file - no difference, still wo't allow me into site.

Please find below 'Error file':

A PHP Exception occurred on your site. Here you can find the stack trace:

Exception Type: RuntimeException
File: /home/customer/www/frewindesign.co.uk/public_html/plugins/system/akeebaupdatecheck/akeebaupdatecheck.php
Line: 68
Message: FOF 3.0 is not installed

#0 /home/customer/www/frewindesign.co.uk/public_html/libraries/joomla/event/event.php(70): plgSystemAkeebaupdatecheck->onAfterInitialise()
#1 /home/customer/www/frewindesign.co.uk/public_html/libraries/joomla/event/dispatcher.php(160): JEvent->update(Array)
#2 /home/customer/www/frewindesign.co.uk/public_html/libraries/src/Application/BaseApplication.php(108): JEventDispatcher->trigger('onafterinitiali...', Array)
#3 /home/customer/www/frewindesign.co.uk/public_html/libraries/src/Application/CMSApplication.php(646): Joomla\CMS\Application\BaseApplication->triggerEvent('onAfterInitiali...')
#4 /home/customer/www/frewindesign.co.uk/public_html/libraries/src/Application/SiteApplication.php(686): Joomla\CMS\Application\CMSApplication->initialiseApp(Array)
#5 /home/customer/www/frewindesign.co.uk/public_html/libraries/src/Application/SiteApplication.php(212): Joomla\CMS\Application\SiteApplication->initialiseApp()
#6 /home/customer/www/frewindesign.co.uk/public_html/libraries/src/Application/CMSApplication.php(203): Joomla\CMS\Application\SiteApplication->doExecute()
#7 /home/customer/www/frewindesign.co.uk/public_html/index.php(49): Joomla\CMS\Application\CMSApplication->execute()
#8 {main}
Request information GET variables
Array
(
)
POST variables
Array
(
)
COOKIE variables
Array
(
)
REQUEST variables
Array
(
)
SERVER variables
Array
(
    [PATH] => /usr/local/bin:/usr/bin:/bin
    [DOCUMENT_ROOT] => /home/u894-76zd1rogndwv/www/frewindesign.co.uk/public_html
    [HTTPS] => on
    [UNIQUE_ID] => YD@YyUdaOJZ50yvga-JaXAAAAC4
    [SCRIPT_URL] => /
    [SCRIPT_URI] => https://www.frewindesign.co.uk/
    [HTTP_AUTHORIZATION] => 
    [PHPHANDLER] => /usr/local/php74/bin/php
    [HTTP_HOST] => www.frewindesign.co.uk
    [HTTP_X_PORT] => 37014
    [HTTP_X_REAL_IP] => 63.143.42.243
    [HTTP_X_FORWARDED_PROTO] => https
    [HTTP_X_ACCEPT_ENCODING] => gzip, deflate
    [HTTP_CONNECTION] => close
    [HTTP_USER_AGENT] => Mozilla/5.0+(compatible; UptimeRobot/2.0; http://www.uptimerobot.com/)
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    [HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8
    [HTTP_ACCEPT_CHARSET] => ISO-8859-1,UTF-8;q=0.7,*;q=0.7
    [HTTP_CACHE_CONTROL] => no-cache
    [HTTP_REFERER] => https://www.frewindesign.co.uk/
    [SERVER_SOFTWARE] => Apache
    [SERVER_NAME] => www.frewindesign.co.uk
    [SERVER_ADDR] => 35.214.229.135
    [SERVER_PORT] => 443
    [REMOTE_ADDR] => 63.143.42.243
    [SERVER_ADMIN] => webmaster
    [SCRIPT_FILENAME] => /home/u894-76zd1rogndwv/www/frewindesign.co.uk/public_html/index.php
    [REMOTE_PORT] => 39556
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.0
    [REQUEST_METHOD] => GET
    [QUERY_STRING] => 
    [REQUEST_URI] => /
    [SCRIPT_NAME] => /index.php
    [PHP_DEFAULT_SOCKET_TIMEOUT] => 20
    [PHP_MAX_EXECUTION_TIME] => 120
    [PHP_MAX_INPUT_TIME] => 120
    [PHP_MEMORY_LIMIT] => 768M
    [PHP_POST_MAX_SIZE] => 256M
    [PHP_UPLOAD_MAX_FILESIZE] => 256M
    [PHP_SELF] => /index.php
    [REQUEST_TIME_FLOAT] => 1614780617.9988
    [REQUEST_TIME] => 1614780617
)

Many Thanks
Jonathan Frewin

 

nicholas
Akeeba Staff
Manager

Hello,

We have received a number of reports regarding the updates to Akeeba Backup 8.0.0/8.0.1 and Admin Tools 6.0.0/6.0.1.

We have released versions 8.0.2 and 6.0.2 which address the root causes of all of the issues which have been reported to us. If you still have access to your site's backend please install these new versions. If not, please keep reading.

The root causes of all of the problems identified were the following:

  • Old plugins we have stopped shipping with our software between 1 and 8 years ago were still installed. These plugins made assumptions about which backend framework our extensions were using and failed during or after the update.
  • Joomla not installing / replacing all files during the update. This was especially problematic when it happened in the backend (FOF) or frontend (FEF) framework used in our extensions because it could make all these extensions failed which could cause anything from display issues to outright inability to use your site's backend.
  • PHP opcode caching (opcache) causing several problems in the course or after the conclusion of the extension update. These problems only happen on hosts which are misconfigured to not check if the files have been updated — a bad idea if you are running an off-the-shelf CMS which updates itself and its extensions / plugins / modules, i.e. replaces .php file during the course of a page load — or had a revalidation (check if files have changed) frequency that was too big. These servers ended up not “seeing” the updated files which would either cause the update to fail (needing to run it a second time to clear the error) OR made it look like there were missing or broken files by throwing messages about missing classes or methods when, in fact, the correct classes were there.
  • Your template overrides are out of date (only applies to frontend components).

If you have been locked out of your site after installing any of the previous versions of our software please follow the solutions below.

PHP opcache

Many servers use PHP's opcode cache to speed up the site. PHP is an interpreted language. The source code of every .php file needs to be read, parsed, converted into an intermediate binary representation called "opcode" and then executed. The read, parse and convert stages take a lot of time. The PHP opcode cache stores the opcode representation of files in memory to speed up your site.

However, when you are updating software on your site you are modifying the same .php files it uses to process every page request. If the opcache is not invalidated (cleared) your server “sees” an old version of the file. This can result in error because your server “sees” a mixed bag of versions of different .php files, versions which may not be designed to be work together and which do not reflect the actual files stored on your server's disk.

We were trying to address this issue by asking PHP to reset the opcode cache (opcache) by using the opcache_reset() function it provides for this purpose. However, the official PHP documentation about how opcache_reset works is wrong! The documentation says that it invalidates the opcode cache, implying that this happens immediately. In fact, it happens asynchronously, after PHP has finished executing the current request. This meant that the opcache was effectively not reset while Joomla was running the post-installation script included in our software. Depending on which pages on your site you had visited before and when, which plugins you run on your site and the configuration of opcache (especially whether and how often it looks for file changes) this would mean that might very well end up with opcache “seeing” old versions of the file during the election of the post-installation scripts or right after the installation had concluded. As a result, you might have experienced errors during or after the installation.

We are now using a different approach with opcache_invalidate() on each .php file included in our software package which addresses this issue.

If you are stuck after installing a previous version of our software you might need to ask your host to reset the opcache or tell you how to do it yourself.

Akeeba Backup: old plugins and Joomla issues causing problems

The problems typically manifest themselves as an error similar to the following:

  • Argument 1 passed to FOF30\Platform\Joomla\Platform::__construct() must be an instance of FOF30\Container\Container
  • Class FOF30\Container\Container not found

Here is how to solve this:

  1. Make a copy of the file administrator/components/com_akeeba/BackupEngine/serverkey.php
  2. Move the folder administrator/components/com_akeeba/backup
  3. Delete the following folders (not all folders may exist on your server):
    • administrator/components/com_akeeba
    • components/com_akeeba
    • plugins/actionlog/akeebabackup
    • plugins/console/akeebabackup
    • plugins/installer/akeebabackup
    • plugins/quickicon/akeebabackup
    • plugins/system/backuponupdate
    • plugins/system/akeebaactionlog
    • plugins/system/akeebaupdatecheck
    • plugins/system/aklazy
    • plugins/system/srp
  4. If you still cannot access your site's backend go to the Admin Tools section of this reply, follow its instructions and come back here.
  5. Download the latest version of Akeeba Backup from our site's Downloads page
  6. Go to Extensions, Manage, Install and install Akeeba Backup, twice in a row, without uninstalling it before or in between.
  7. Replace the file administrator/components/com_akeeba/BackupEngine/serverkey.php with the one you made a copy of in the first step.
  8. Replace the folder administrator/components/com_akeeba/backup with the one you moved in the second step.

If you have Admin Tools continue reading below. Otherwise skip over the Admin Tools section and go to the FOF 3 & 4 sections.

Admin Tools: old plugins and Joomla issues causing problems

  1. Delete the following folders (not all folders may exist on your server):
    • administrator/components/com_admintools
    • components/com_admintools
    • plugins/actionlog/admintools
    • plugins/installer/admintools
    • plugins/system/admintools
    • plugins/system/atoolsjupdatecheck
    • plugins/system/atoolsupdatecheck
    • plugins/system/oneclickaction
  2. Download the latest version of Admin Tools from our site's Downloads page
  3. Go to Extensions, Manage, Install and install Admin Tools, twice in a row, without uninstalling it before or in between.

FOF 3 was uninstalled but it's still required

Our software released between mid-2015 and February 2021 inclusive was using version 3 of our FOF backend framework. Software released on and after March 2nd, 2021 is using version 4 of the framework.

Since FOF might be used by multiple extensions, either our own or third party, we check if any extension has been marked as dependent on FOF 3. If none is marked as such we uninstall FOF 3.

This might be a problem in the following cases:

  • You have used Discover & Install to install an extension depending on FOF 3.
  • You are using a third party extension which does not mark itself or its sub-extensions (plugins, modules etc) as dependent on FOF 3.

In these cases the dependency is not marked in any way and there is no way to know that a FOF 3 dependent extension is installed on your site. As a result FOF 3 might be removed when it's actually needed. You will very likely see an error message saying that a class is missing whose name starts with FOF30\.

In order to gain access back to your site do the following.

  • Download the latest version of FOF 3.x from our site's Downloads page. Please note that this is a THREE, not a FOUR.
  • Extract the ZIP file.
  • There is a folder named fof extracted from the archive. Rename it to fof30.
  • Upload the fof30 folder into your site's libraries folder so now you have a libraries/fof30 folder.
    Please note that there might be other folder with similar names in there such as fof, f0f, fof40. DO NOT REPLACE OR DELETE THESE OTHER FOLDERS. The folder fof is part of Joomla 3; if you remove it your site WILL break. The folder f0f is a very old version of our framework used by third party extensions; removing it will most likely break your site. The folder fof40 is FOF 4, used by versions of our software released after March 2nd, 2021; removing it WILL break your site.
  • Do NOT try to install the FOF 3.x ZIP file you downloaded in a previous step. This would cause the next time a FOF 4 extension is installed to remove the libraries/fof30 folder again and you'd need to repeat these instructions.

After doing that you may have to clear your server's PHP opcode cache (opcache) per the PHP opcache section in this reply.

FOF 4 was not installed fully or at all

Our software released between mid-2015 and February 2021 inclusive was using version 3 of our FOF backend framework. Software released on and after March 2nd, 2021 is using version 4 of the framework.

There is a long-standing Joomla issue which may prevent the new version of an extension, such as FOF, to be installed fully or at all. It happens rarely but with thousands of sites using our software it's an issue we see every time we publish a new release.

This will usually manifest itself with an error similar to:

  • Class 'FOF40\Container\Container' not found

  • Class 'FOF40\Dispatcher\Dispatcher' not found

There is a way to work around this.

  • Download the latest version of FOF 4.x from our site's Downloads page. Please note that this is a FOUR, not a THREE.
  • Extract the ZIP file.
  • There is a folder named fof extracted from the archive. Rename it to fof40.
  • Upload the fof40 folder into your site's libraries folder so now you have a libraries/fof40 folder. If there was already a folder by that name, overwrite it.
    Please note that there might be other folder with similar names in there such as fof, f0f, fof30. DO NOT REPLACE OR DELETE THESE OTHER FOLDERS. The folder fof is part of Joomla 3; if you remove it your site WILL break. The folder f0f is a very old version of our framework used by third party extensions; removing it will most likely break your site. The folder fof30 is FOF 3, used by versions of our software released before March 2nd, 2021 and third party extensions; removing it will most likely break your site.

After doing that you may have to clear your server's PHP opcode cache (opcache) per the PHP opcache section in this reply.

FEF was not upgraded to version 2 fully or at all

Our software released between 2017 and February 2021 inclusive was using version 1 of our FEF frontend framework. Software released on and after March 2nd, 2021 is using version 2 of the framework.

There's an issue with Joomla which happens rarely and which results in Joomla not replacing all of the files when performing an update.

You can verify this is the case by opening the file media/fef/fef.php and checking if the line

public static function loadCSSFramework(bool $withReset = true, bool $dark = false)

is present in the file. If not, you've been hit by this Joomla issue and need to work around it manually.

  • Download the latest version of FEF from our site's Downloads page.
  • Extract the ZIP file.
  • Upload all extracted files and folders into your site's media/fef folder, overwriting existing files and folders by the same name.

After doing that you may have to clear your server's PHP opcode cache (opcache) per the PHP opcode section in this reply.

Out of date template overrides

This only applies if you have problems in the frontend of your site, you are using one of our extensions with a frontend part (e.g. Akeeba Ticket System, LoginGuard etc) and you have done template overrides to style it.

Please note that the new versions of our software may have changed the view template files you used to create your template overrides or changed their names. Please review your template overrides. This is especially important when you are upgrading to a new minor or major release of our software, i.e. the first or digit before the second or first dot in the version number respectively has changed compared to the previous version of our software you had installed on your site.

Nicholas K. Dionysopoulos

Lead Developer and Director

🇬🇷Greek: native 🇬🇧English: excellent 🇫🇷French: basic • 🕐 My time zone is Europe / Athens
Please keep in mind my timezone and cultural differences when reading my replies. Thank you!

jfrewin5

Hi Nick

Completely agree, everything is getting too complex and no longer working logically.

Thanks for your response, in the end I uploaded a backup, couldn't do it with 'kickstart' but managed it from my backups on the SiteGround server.

Updated Akeeba, both Backup and Tools, then started getting FOF40 errors, rather than the FOF30 I was getting before.

Loaded it twice as you suggested and that seems to have fixed it.

I don't believe it's an opcache issue (on SiteGround/Site Tools) as I have other sites on the same server which updated without any problems with both the latest releases (8 and 8.1).

It's just a mess and I've spent (wasted) a whole day on this.

Probably time to retire!

Kind Regards

Jonathan

Support Information

Working hours: We are open Monday to Friday, 9am to 7pm Cyprus timezone (EET / EEST). Support is provided by the same developers writing the software, all of which live in Europe. You can still file tickets outside of our working hours, but we cannot respond to them until we're back at the office.

Support policy: We would like to kindly inform you that when using our support you have already agreed to the Support Policy which is part of our Terms of Service. Thank you for your understanding and for helping us help you!