Support

Site Restoration

#42683 Site Restoration Test -- Tried Everything in Documentation

Posted in ‘Site restoration’
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

PHP version
n/a
CMS Type
Joomla!
CMS Version
3.10
Backup Tool Version
Akeeba Backup Professional 8.3
Kickstart version
9.0.2

Latest post by dasakeeba on Sunday, 08 February 2026 06:29 CST

dasakeeba

Hello,

I prematurely posted a problem with Kickstart, only to find out it was my upload method. Now, I've tried everything and can replicate the problem 100% of the time. It must be settings on the server.

1) If I DO NOT bypass Phar, what happens is that I can get kickstart.php (actually, what I rename it) to run ONCE. Then I can never run it again -- it throws 500 errors. But if I rename it, it will run it again, just ONCE. I figure the server must block something after that first run.

2) I read about and did all with Phar in terms of creating the director, putting the file in, assigning permissions. What happens is this:

- if I run the Kickstart file, a blank screen. But then I went and looked and it created all the files under that kicktemp directory. But it won't go further.

- if I rename the kicktemp directory to something else like kicktemp2, Kickstart will open up. Then I rename and directory back and try to run it. It fails again -- I guess it thinks Phar is still available to it.

So I just cannot get this to run with Phar or bypassing Phar. Officially stuck. 

I should note that these are Joomla 3.10 backups with your tool. These are my only two sites left on J3. But does that matter?

Any help you can give.

Thanks,

DAS 

System Task
system
The ticket information has been edited by Douglas Schneider (dasakeeba).

System Task
system
The ticket information has been edited by Douglas Schneider (dasakeeba).

nicholas
Akeeba Staff
Manager

What you describe points to one thing: bad settings for OPcache.

The problem is that most hosts do not understand how OPcache actually works. OPcache doesn't magically know if a .php file –whether it is included in a PHAR archive, or extracted into a directory such as kicktemp– exists and is the same as what was previously cached. This behaviour is configurable.

The configuration you see suggested for live hosts is not geared towards shared hosting. It is geared towards the CI/CD pipeline use case. In this use case a new virtual machine is created each time new code is being deployed. In this very specific use case you don't want OPcache to waste time determining if the PHP files have changed because, by the very definition of the use case, they never do. When a PHP file changes it's a new deployment. In this use case you want an essentially static OPcache and you only worry about cache warm-up, not cache refresh.

However, we do not and cannot use shared hosting this way. We need to upload PHP files to an application server which is not created afresh or even restarted when we deploy new files. Extracting a backup, updating Joomla / WordPress, installing or updating software for our sites, even using file-based caching and log files for our caching does create and modify PHP files on the host. OPcache will not work properly in this use case unless it's configured to check whether the cached files still exist, and whether they match what OPcache has already cached.

The most pertinent OPcache configuration options are:

  • opcache.validate_timestamps This MUST be enabled (set to 1 or true). This is the toggle switch for this OPcache feature I described.
  • opcache.revalidate_freq This MUST be set to something fairly low. A value between 2 and 5 allows OPcache to be effective in speeding up the server without causing issues when the PHP file on the server change.

The default settings in PHP are opcache.validate_timestamps=1 and opcache.revalidate_freq=2 which is perfectly fine for both development servers, and for live shared hosting.

You might wonder why you'd get missing files errors if OPcache is misconfigured. It's because OPcache caches two things: the compiled contents of the files (also known as op-code, hence the name “OPcache”), and the metadata of a file (does it exist, when it was created and last modified, what is its size). The latter is controlled by a different setting, opcache.enable_file_override, which is disabled by default.

This means that it's possible and common to misconfigure OPcache in such a way that it "remembers" the compiled contents of files, and file metadata, but is out-of-date with the actual files in your filesystem. The cached executable op-code executes up to the point it needs to include a class file to continue. That file is reported as non-existent even though it's shipped with Kickstart itself, therefore you get an error.

You can temporarily work around that by using a different filename for Kickstart and its kicktemp folder. This creates a new path for loading code files from. However, this will also get out of sync with the filesystem very soon which is why it's a bad workaround.

The correct solution is to work with your host to configure OPcache correctly for the use case of a Joomla or WordPress site:

  • opcache.validate_timestamps=1
  • opcache.revalidate_freq=2
  • opcache.enable_file_override=0

Your host will probably tell you that OPcache can't have anything to do with your problem. That's because they don't know how OPcache actually works. We do. It's our job to know that. Moreover, we have seen every person with a similar problem applying those OPcache settings on their server –and making sure to afterwards restart PHP-FPM or the web server itself, depending on how PHP execution is configured– saw these problems disappear once they followed our instructions to reconfigure OPcache.

As a side note, misconfigured OPcache is worse than just getting in your way of restoring a backup. It also means that any updates you install in your core CMS and its software is not applied. You may have installed a security update as soon as it was available... but your site kept running the old, vulnerable code exposing you and your site to known and otherwise preventable danger. You may have installed updates to the software you run on the site, but the old code with known bugs still runs and you blame the developer for not addressing your issue even though they already have.

A properly configured OPcache can make your site faster. A misconfigured OPcache will render your site broken. Understanding the OPcache inner workings and configuration is, therefore, of paramount importance.

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!

dasakeeba

Hello,

I contacted my host and they put the three lines you supplied into the PHP.ini file and restarted it. I'm getting the exact same problem. I have done this on a different domain (the main one), because I wanted to see if the fix would work there. I have changed the path in the original ticket.

That said, to summarize:

- if kicktemp is present, kickstart won't work -- blank page

- if kicktemp is not present, kickstart starts but then fails immediately when the restoration is told to begin

???

DAS

System Task
system
The ticket information has been edited by Douglas Schneider (dasakeeba).

nicholas
Akeeba Staff
Manager

First of all, it makes no sense that just the presence of kicktemp would cause that since it won't do anything by itself. It would only do something in two cases:

  1. If you place a file called nophar.txt inside it. In this case you would be bypassing PHAR, having Kickstart extract itself inside a subdirectory of kicktemp.
  2. If you start the restoration using the Hybrid or FTP mode, having entered connection details, in which case Kickstart will extract each file there before uploading it to its final destination.

Do you have the nophar.txt file in kicktemp or not?

Further to that, you are telling me that you are using Joomla 3.10 but have no information on the PHP version. Kickstart 9 requires a newer PHP version. I have a feeling that your blank page may be because it runs… but it breaks because your server is using an older PHP version by default. I would recommend using Kickstart 8 for your Joomla! 3.10 site. Please remember that Joomla 3.10 is frozen in time, in August 2021 to be exact. It was never updated to work with newer PHP version, and neither was Akeeba Backup 8 (it would make no sense supporting PHP versions Joomla does not).

So why don't you just go back to Kickstart 8 which is what you should be using for this site to begin with.

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!

dasakeeba

Hello,

I truly appreciate your quick and thorough support.

Sorry it took a bit for me to get back to this -- but I did and you're right about PHP. I resorted to an older version of Kickstart that runs under older PHP and all is good. I need to get some upgrades going in that regard.

Thanks again, we can consider this resolved.

DAS

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!