Mettre à jour PrestaShop en ligne de commande sans l'interface graphique

Publié le par révisé le 27/05/2026

L'interface graphique du module AutoUpgrade de Prestashop est pratique, mais elle a une limite concrète : elle tourne dans le navigateur. Une mise à jour qui dure 20 minutes sur un serveur lent peut se terminer par un timeout HTTP, une page blanche, ou pire, un site cassé

La CLI ne souffre pas de ce problème. Elle tourne directement sur le serveur, sans navigateur, sans timeout, et elle laisse un log complet.
Ce guide couvre la mise à jour en ligne de commande avec le module AutoUpgrade 7.x, disponible à partir de PrestaShop 8.x et compatible avec PrestaShop 9.x.

Prérequis

Avant de commencer, quelques vérifications indispensables.

Version du module AutoUpgrade : La CLI est disponible uniquement à partir de la version 7.0. Vérifie la tienne :

cat modules/autoupgrade/autoupgrade.php | grep "\$this->version" | head -1

Si tu es en dessous de 7.0, mets d'abord à jour le module via le back-office ou en téléchargeant la dernière version sur l'addons PrestaShop.

Accès SSH : Tu en auras besoin pour toutes les commandes de ce guide.
PHP en CLI : Vérifie que PHP est accessible et en version compatible

php -v

 

  • PrestaShop 9.x requiert PHP 8.1 minimum. PrestaShop 8.x fonctionne avec PHP 7.4 à 8.2.
  • Mémoire PHP : Les opérations de mise à jour sont gourmandes. Toujours préfixer tes commandes avec -d memory_limit=2G pour éviter les erreurs d'allocation mémoire en cours de route.

Étape 1 : Sauvegarder avant tout

C'est l'étape que tout le monde zappe et que tout le monde regrette. Une mise à jour PrestaShop modifie des fichiers core, des fichiers de configuration Symfony, et peut altérer la structure de la base de données. Sans backup, un rollback est impossible.

Personnellement, je passe cet étape, car j'ai déjà un système de sauvegarde automatique.

Sauvegarder la base de données

mysqldump -u TON_USER -p TON_NOM_BDD > backup_bdd_$(date +%Y%m%d_%H%M).sql

Les identifiants sont dans app/config/parameters.php si tu ne les as pas sous la main.

Sauvegarder les fichiers critiques

L'AutoUpgrade sauvegarde les fichiers core, mais il ne touche pas à ton thème enfant ni à tes overrides. Ces répertoires sont les tiens, archive-les :

tar -czf backup_theme_$(date +%Y%m%d).tar.gz themes/nom-de-ton-theme/
tar -czf backup_override_$(date +%Y%m%d).tar.gz override/
tar -czf backup_modules_$(date +%Y%m%d).tar.gz modules/

Le module AutoUpgrade propose aussi sa propre commande de backup :

php -d memory_limit=2G modules/autoupgrade/bin/console backup:create admin_dev

Remplace admin_dev par le nom réel de ton dossier d'administration. Pour le trouver :

ls -d */ | grep -i admin

Pour lister les backups existants :

php -d memory_limit=2G modules/autoupgrade/bin/console backup:list admin_dev

Le backup de l'AutoUpgrade couvre les fichiers core et la base de données, mais il peut atteindre plusieurs centaines de Mo selon la taille de ta boutique. Garde tes propres archives en parallèle, elles sont plus légères et plus rapides à restaurer sur des éléments ciblés.

Étape 2 : Vérifier la disponibilité des mises à jour

php -d memory_limit=2G modules/autoupgrade/bin/console update:check-new-version admin_dev

La commande retourne un tableau indiquant la version disponible, le canal (stable, beta), et le type de mise à jour (patch, minor, major). Pour une mise en production, reste sur le canal online_recommended.

Étape 3 : Vérifier les prérequis

Personnellement, les étapes 3 et 4, je préfère les faire avec l'interface visuelle.

php -d memory_limit=2G modules/autoupgrade/bin/console update:check-requirements admin_dev

Cette commande passe en revue les points bloquants : version PHP, extensions PHP manquantes, permissions de fichiers, espace disque disponible. Règle tout ce qui est marqué comme erreur avant de continuer. Les avertissements (warnings) ne bloquent pas la mise à jour mais méritent attention.

Étape 4 : Vérifier la compatibilité des modules

php -d memory_limit=2G modules/autoupgrade/bin/console update:check-modules admin_dev

Cette commande liste tes modules et indique lesquels sont compatibles avec la version cible. Les modules incompatibles peuvent être désactivés automatiquement pendant la mise à jour. Ce comportement par défaut est raisonnable pour éviter les erreurs 500, mais si tu veux garder la main dessus, vérifie les options disponibles :

php -d memory_limit=2G modules/autoupgrade/bin/console update:start --help

Étape 5 : Lancer la mise à jour

php -d memory_limit=2G modules/autoupgrade/bin/console update:start admin_dev --no-interaction 2>&1 | tee upgrade_log.txt

Quelques précisions sur cette commande :

  • --no-interaction évite que la commande s'arrête en attente d'une confirmation manuelle. Indispensable si tu lances ça depuis un script ou une session SSH qui peut se fermer.
  • 2>&1 redirige les erreurs PHP (stderr) dans le même flux que la sortie standard, pour qu'elles apparaissent dans le log.
  • | tee upgrade_log.txt enregistre tout dans un fichier tout en affichant la progression dans le terminal. En cas de problème, tu as une trace complète.

Combien de temps ça prend ?

Difficile de donner un chiffre exact, ça dépend du serveur, du nombre de fichiers, de la taille de la base de données, et du nombre de modules installés. En pratique :

  • Mise à jour patch (ex. 9.1.1 → 9.1.3) sur un VPS standard : entre 5 et 15 minutes
  • Mise à jour minor (ex. 9.0.x → 9.1.x) : entre 15 et 40 minutes
  • Mise à jour major (ex. 8.x → 9.x) : entre 30 minutes et plus d'une heure

La phase la plus longue est généralement la copie des fichiers core et la régénération du cache Symfony. Sur des hébergements mutualisés avec peu de RAM, ça peut prendre deux fois plus longtemps.

Ne ferme pas le terminal pendant l'opération. Si ta session SSH risque de timeout, utilise screen ou tmux pour lancer la commande dans une session persistante :

screen -S upgrade
# lance ta commande, puis Ctrl+A D pour détacher
screen -r upgrade # pour reprendre

Étape 6 : Vider le cache après la mise à jour

La mise à jour régénère partiellement le cache, mais un vidage manuel reste recommandé pour s'assurer que rien de l'ancienne version ne subsiste :

php -d memory_limit=1G bin/console cache:clear --env=prod

Si tu travailles en environnement de développement :

php -d memory_limit=1G bin/console cache:clear --env=dev

Que faire si ça tourne mal ?

Erreur 500 après la mise à jour

Active le mode debug pour voir l'erreur réelle. Dans config/defines.inc.php, passe _PS_MODE_DEV_ à true, ou modifie .htaccess temporairement. Le message d'erreur affiché dans le navigateur est souvent trop vague pour diagnostiquer quoi que ce soit.

Le vendor est incomplet

Si tu vois des erreurs du type Failed to open stream: No such file or directory pointant vers vendor/, Composer n'a pas terminé son travail correctement. Relance :

php -d memory_limit=2G /usr/local/bin/composer install --optimize-autoloader --no-interaction

Si Composer se plaint d'un conflit entre composer.json et composer.lock, régénère d'abord le lock file :

php -d memory_limit=2G /usr/local/bin/composer update --lock --no-interaction

Puis relance l'install.

Un package spécifique est corrompu

Si un répertoire dans vendor/ existe mais est vide ou incomplet (juste un fichier LICENSE par exemple), force la réinstallation du package :

php -d memory_limit=2G /usr/local/bin/composer reinstall symfony/nom-du-package --optimize-autoloader

Rollback complet

Si la mise à jour a créé trop de dégâts et que tu veux revenir à l'état précédent :

php -d memory_limit=2G modules/autoupgrade/bin/console backup:restore admin_dev

La commande liste les backups disponibles et te demande lequel restaurer.

Astuces

Faire la mise à jour en heures creuses. Même si le site continue de fonctionner pendant la mise à jour pour la plupart des opérations, certaines phases (notamment la mise à jour de la BDD) peuvent créer des incohérences temporaires. Planifie ça en dehors des heures de trafic.

Tester en staging d'abord. Si tu as un environnement de recette, applique toujours la mise à jour là-bas avant la production. Les incompatibilités de modules se détectent bien mieux à froid que sous le feu du service.

Ne pas mettre à jour core et modules en même temps. Fais la mise à jour PrestaShop, vérifie que tout fonctionne, puis mets à jour tes modules séparément. Mélanger les deux rend le diagnostic impossible en cas de problème.

Vérifier les overrides après mise à jour. Les fichiers dans override/ ne sont pas supprimés, mais si PrestaShop a modifié la classe que tu surcharges, ton override peut silencieusement casser un comportement. Passe en revue override/classes/ et override/controllers/ après chaque mise à jour majeure.

Surveiller les logs. Après remise en service, garde un oeil sur var/logs/ pendant quelques heures. Les erreurs qui ne génèrent pas de 500 visibles (erreurs dans des hooks, modules qui plantent silencieusement) se retrouvent là.

Vérifier la version installée. Pour confirmer que la mise à jour a bien abouti, va dans le back-office sous Paramètres avancés > Informations.

Test le parcours d'un client. Utilise ta boutique comme un client, de la connexion au paiement.

Avertissement

Cet article a été rédigé avec l'assistance d'une IA (Claude, développé par Anthropic), à partir d'un cas concret de mise à jour de PrestaShop 9.1.1 vers 9.1.3 réalisée en conditions réelles.

Les commandes présentées ont été testées dans ce contexte spécifique. Selon votre environnement (version PHP, hébergeur, configuration serveur, modules installés), certaines peuvent nécessiter des adaptations. En cas de doute ou de problème, LEXPROD ne pourra être tenu responsable.

Si vous n'êtes pas à l'aise avec les lignes de commande, il est tout à fait possible de vous faire assister par une IA pour ce type d'opération. Pour ce travail, nous recommandons Claude. Gardez cependant à l'esprit qu'un tel outil doit être correctement configuré et prompté pour produire des réponses fiables dans votre contexte précis.

< Retour

Restez informé avec LEXPROD

Rejoignez la newsletter LEXPROD et recevez chaque mois des conseils concrets, des astuces exclusives et des opportunités réservées à nos abonnés pour enfin simplifier le digital et faire grandir votre activité. Essayez, tout le contenu est offert. Votre réussite commence ici ! 

Ces sujets peuvent vous intéressés