For the old, 2023 update article, click here. This guide is for the 7.0 version of the autoupgrade module that allows local updates.
-
put shop in maintenance mode
-
save files like theme custom.css to restore later
-
disable overrides by renaming the "overrides" folder to something like "disable_overrides"
The "disable overrides" checkbox in the autoupgrade flow does ⭐nothing⭐
-
update the 1-click-upgrade module
-
download the archive of the Prestashop version you want to upgrade to
You should be able to find all versions of Prestashop here Available versions of PrestaShop software.
In this case I was moving from 1.7.8.10 to 1.7.8.11.
-
move the .zip archive containing the new Prestashop version is in $YOUR_ADMIN_FOLDER/autoupgrade/download/ in the site you are trying to upgrade
The file you downloaded is likely double-archived. The archive that needs to go here is the one that wraps the prestashop.zip archive that contains folders like app, classes, cache, config, etc. Copy the double-archive, not the embedded archive.
-
put the XML config file for the prestashop version you are upgrading to into $YOUR_ADMIN_FOLDER/download/$NEW_PRESTA_VERSION.xml and config/xml/$NEW_PRESTA_VERSION.xml
-
get the file from https://api.prestashop.com/xml/md5/$NEW_PRESTA_VERSION.xml
-
-
backup your db and files fully
Don't even consider using the automatic autoupgrade backups. They are useless as they never work.
-
update
-
go to the update page which for me was /$ADMIN_FOLDER/index.php?controller=AdminSelfUpgrade
-
select local update, and select the zip and xml file you added
-
let it rip and pray
-
If you're getting weird errors, they're likely caused by permissions. I didn't encounter any more errors after I did all of the above.
If you can no longer log in after the upgrade, it's likely because of the fact that the site is in maintenance and you haven't set your IP in the whitelist. Ignore the wrong password prompt and go in the DB and set PS_SHOP_ENABLED to 1, or, IF YOU ARE ON LOCAL, comment out the "return false;" from the Employee::getByEmail function, where it checks if the checkHash returned that the password was wrong.