Erreur 503 sur PrestaShop
Le guide complet pour les e-commerçants
Cache, modules, performances : protégez vos ventes et votre référencement.
L’enjeu pour un e-commerce
Sur un site vitrine, une erreur 503 est gênante. Sur une boutique PrestaShop, c’est une urgence commerciale :
- Chaque minute d’indisponibilité = ventes perdues
- Paniers abandonnés qui ne reviendront pas
- Impact SEO sur vos fiches produits (longue traîne)
- Confiance client dégradée
1€/min
Perte moyenne (CA 500k€)
68%
Des visiteurs ne reviennent pas après une erreur
4-6h
Seuil critique SEO pour e-commerce
Ce guide couvre les causes spécifiques à PrestaShop et leurs solutions.
Besoin d’une intervention immédiate ? IllicoPresta propose un support e-commerce spécialisé PrestaShop, disponible 7j/7.
Les 8 causes principales sur PrestaShop
Cache Smarty corrompu ou saturé
Fréquence : ⭐⭐⭐⭐⭐ (très fréquent)
Le moteur de template Smarty génère des fichiers cache qui peuvent se corrompre ou saturer le disque.
Symptômes :
- 503 après une modification de thème
- Erreurs
Smartydans les logs - Le back-office fonctionne mais pas le front
Module défaillant ou incompatible
Fréquence : ⭐⭐⭐⭐⭐ (très fréquent)
Un module mal codé, incompatible avec votre version de PrestaShop ou en conflit avec un autre module.
Symptômes :
- 503 après installation/mise à jour d’un module
- Erreur
Class not founddans les logs - Problème sur une fonctionnalité spécifique (checkout, recherche)
Surcharge au checkout / panier
Fréquence : ⭐⭐⭐⭐ (fréquent)
Le tunnel de commande est la partie la plus sollicitée et la plus complexe. Pics de charge, calculs de frais de port, modules de paiement…
Symptômes :
- 503 uniquement sur
/commandeou/panier - Timeout lors du calcul des transporteurs
- Erreurs liées aux modules de paiement
Crons et tâches planifiées bloquées
Fréquence : ⭐⭐⭐ (courant)
Les tâches automatiques de PrestaShop (import, export, indexation) peuvent s’accumuler et saturer le serveur.
Symptômes :
- Lenteur progressive puis 503
- Processus PHP qui tournent depuis des heures
- Files d’attente qui grossissent
Overrides en conflit
Fréquence : ⭐⭐⭐ (courant)
Le système d’overrides de PrestaShop permet de modifier le core sans toucher aux fichiers source. Mais des overrides incompatibles peuvent tout casser.
Symptômes :
- 503 après mise à jour PrestaShop
- Erreurs
Cannot redeclare class - Fonctionnalités qui ne marchent plus
Base de données saturée
Fréquence : ⭐⭐⭐ (courant)
Tables volumineuses (logs, stats, paniers abandonnés), requêtes lentes, index manquants.
Symptômes :
- Lenteur généralisée puis timeout
- Erreurs MySQL dans les logs
- Le problème empire avec le temps
Limite mémoire PHP / Workers
Fréquence : ⭐⭐ (moins fréquent)
PrestaShop est gourmand en ressources. Catalogues volumineux, imports, génération de PDF…
Symptômes :
Allowed memory size exhausted- 503 sur les pages avec beaucoup de produits
- Import/export qui échoue
Mode maintenance mal configuré
Fréquence : ⭐⭐ (moins fréquent)
Le mode maintenance natif de PrestaShop peut rester bloqué ou mal configuré, affichant une 503 sans le vouloir.
Symptômes :
- 503 alors que vous pensiez avoir désactivé la maintenance
- IP non reconnue dans la whitelist
- Configuration incohérente en base
Problème 1 : Cache Smarty corrompu
Le cache Smarty est la cause n°1 des 503 sur PrestaShop. Un fichier corrompu et tout le front-end plante.
Diagnostic
# Erreurs Smarty dans les logs
$ grep -i "smarty" /var/log/php8.2-fpm.log | tail -20
# Exemples d'erreurs
Smarty error: unable to write to $compile_dir '/var/www/prestashop/var/cache/prod/smarty/compile'
Fatal error: Uncaught SmartyCompilerException: Syntax error in template
Solutions
Solution 1 : Vider le cache en ligne de commande (recommandé)
# PrestaShop 1.7+ / 8.x
$ cd /var/www/prestashop
# Vider tout le cache
$ rm -rf var/cache/prod/* var/cache/dev/*
# Régénérer
$ php bin/console cache:clear --env=prod
$ php bin/console cache:warmup --env=prod
Solution 2 : Vider uniquement Smarty
# Cache Smarty spécifiquement
$ rm -rf var/cache/prod/smarty/cache/*
$ rm -rf var/cache/prod/smarty/compile/*
Solution 3 : Via le back-office (si accessible)
Paramètres avancés > Performances > Vider le cache
Solution 4 : Script de nettoyage automatique
scripts/clear-cache.sh
#!/bin/bash
# Script de nettoyage cache PrestaShop
PRESTA_DIR="/var/www/prestashop"
cd $PRESTA_DIR
echo "🧹 Nettoyage du cache PrestaShop..."
# Supprimer les caches
rm -rf var/cache/prod/*
rm -rf var/cache/dev/*
# Régénérer (optionnel, se fait au premier accès)
# php bin/console cache:clear --env=prod --no-warmup
# Permissions
chown -R www-data:www-data var/cache/
echo "✅ Cache vidé !"
Configuration optimale du cache Smarty
Administration > Paramètres avancés > Performances
Cache de template : Oui (Recompiler si les fichiers ont été mis à jour)
Cache : Système de fichiers (ou Memcached/Redis si disponible)
Ne jamais recompiler les fichiers de template : NON en dev, OUI en prod stable
Ne jamais activer « Ne jamais recompiler » sur un site en développement ou en cours de modification. Vous ne verriez pas vos changements.
Problème 2 : Module défaillant
Diagnostic
Étape 1 : Identifier le module via les logs
$ grep -i "fatal\|error" /var/log/php8.2-fpm.log | grep -i "modules" | tail -20
# Exemple
PHP Fatal error: Class 'MyModule\Services\Calculator' not found in
/var/www/prestashop/modules/mymodule/src/Calculator.php on line 45
Étape 2 : Voir les modules récemment modifiés
$ find /var/www/prestashop/modules -type f -mtime -1 -name "*.php" | head -20
Solutions
Solution 1 : Désactiver via base de données
$ mysql -u prestashop -p prestashop_db
# Voir les modules actifs
mysql> SELECT name, active FROM ps_module WHERE active = 1;
# Désactiver un module spécifique
mysql> UPDATE ps_module SET active = 0 WHERE name = 'monmodule';
# Supprimer les hooks du module (important !)
mysql> DELETE FROM ps_hook_module WHERE id_module = (
SELECT id_module FROM ps_module WHERE name = 'monmodule'
);
# Vider le cache après
$ rm -rf var/cache/prod/*
Solution 2 : Désactiver via renommage du dossier
# Renommer le module (PrestaShop ne le trouvera plus)
$ mv modules/monmodule modules/monmodule_disabled
# Vider le cache
$ rm -rf var/cache/prod/*
Solution 3 : Désactiver tous les modules tiers
$ mysql -u prestashop -p prestashop_db
# Désactiver tous les modules non-natifs
mysql> UPDATE ps_module SET active = 0
WHERE name NOT IN (
'ps_banner', 'ps_contactinfo', 'ps_emailsubscription',
'ps_featuredproducts', 'ps_imageslider', 'ps_linklist',
'ps_mainmenu', 'ps_searchbar', 'ps_socialfollow'
-- Ajoutez les autres modules natifs
);
# Vider le cache
$ rm -rf var/cache/prod/*
# Tester le site, puis réactiver un par un
Modules PrestaShop connus pour causer des problèmes
| Module | Problème fréquent | Solution |
|---|---|---|
| Modules de paiement | Timeout API, callback échoué | Vérifier credentials, augmenter timeout |
| Modules de transport | Calcul lent, API transporteur down | Cache des tarifs, fallback |
| Modules SEO | Redirections en boucle, surcharge | Vérifier règles htaccess |
| Modules import/export | Memory exhausted, timeout | Traiter par lots, cron |
| Page builders | Mémoire, cache incompatible | Augmenter limits, vider cache |
| Modules de cache | Cache corrompu, conflits | Désactiver, vider, reconfigurer |
| Modules RGPD | Hooks partout, lenteur | Vérifier configuration, désactiver si test |
Problème 3 : Surcharge au checkout
Le tunnel de commande est critique : c’est là que l’argent entre. C’est aussi la partie la plus complexe.
Diagnostic
# Requêtes vers le checkout dans les logs
$ grep -E "(cart|order|checkout)" /var/log/nginx/access.log | tail -50
# Temps de réponse des pages checkout
$ grep "POST /commande" /var/log/nginx/access.log | awk '{print $NF}' | sort -n | tail -20
# Le dernier champ est souvent le temps de réponse
# Erreurs spécifiques checkout
$ grep -i "carrier\|payment\|cart" /var/log/php8.2-fpm.log | tail -30
Causes et solutions
Cause 1 : Calcul des frais de port trop lent
Les modules de transporteurs font souvent des appels API en temps réel.
Solution : Mettre en cache les tarifs
<?php
// Dans un override ou module custom
// Cacher les tarifs transporteurs pendant 1h
class Carrier extends CarrierCore
{
public static function getDeliveryPriceByWeight($id_carrier, $total_weight, $id_zone)
{
$cache_key = 'carrier_price_' . $id_carrier . '_' . $total_weight . '_' . $id_zone;
if (Cache::isStored($cache_key)) {
return Cache::retrieve($cache_key);
}
$price = parent::getDeliveryPriceByWeight($id_carrier, $total_weight, $id_zone);
Cache::store($cache_key, $price);
return $price;
}
}
Cause 2 : Module de paiement qui timeout
# Vérifier les timeouts dans les logs
$ grep -i "timeout\|timed out" /var/log/php8.2-fpm.log | tail -20
Solution : Augmenter les timeouts pour les appels de paiement :
Configuration cURL dans le module
<?php
// Dans le module de paiement, augmenter le timeout
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 30 secondes au lieu de 10
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
Cause 3 : Trop de hooks sur le checkout
$ mysql -u prestashop -p prestashop_db
# Voir les hooks les plus chargés
mysql> SELECT h.name, COUNT(hm.id_module) as nb_modules
FROM ps_hook h
JOIN ps_hook_module hm ON h.id_hook = hm.id_hook
GROUP BY h.id_hook
ORDER BY nb_modules DESC
LIMIT 20;
# Hooks critiques pour le checkout
# displayPayment, displayPaymentReturn, actionValidateOrder
Solution : Désactiver les modules non essentiels sur les hooks du checkout.
Cause 4 : Stock recalculé à chaque action
Sur les gros catalogues, le recalcul de stock peut être lourd.
Paramètres boutique > Produits > Stock
Permettre la commande de produits hors stock : Selon votre business
Activer la gestion des stocks : Oui
Nombre de jours pour considérer un produit "nouveau" : 20 (pas trop élevé)
Pour les pics de charge prévisibles (soldes, Black Friday) : mettez en cache le plus possible, désactivez les fonctionnalités non essentielles, et prévoyez un scaling serveur.
Problème 4 : Crons et tâches bloquées
Diagnostic
# Processus PHP qui tournent depuis longtemps
$ ps aux | grep php | awk '$10 > "00:30:00" {print}'
# Requêtes vers les crons
$ grep "cron" /var/log/nginx/access.log | tail -20
# Tâches en cours dans la base
$ mysql -u prestashop -p prestashop_db -e "
SELECT * FROM ps_cronjobs WHERE active = 1;
"
Solutions
Solution 1 : Killer les processus bloqués
# Identifier
$ ps aux | grep php | grep -v grep
# Killer un processus spécifique
$ kill -9 <PID>
# Killer tous les processus cron PHP (attention !)
$ pkill -f "cron.php"
Solution 2 : Configuration cron système
# Désactiver le cron front-office (déclenché par les visites)
# Activer un vrai cron système
$ crontab -e
# Cron PrestaShop toutes les 15 minutes
*/15 * * * * /usr/bin/php /var/www/prestashop/bin/console prestashop:cron:run > /dev/null 2>&1
# Ou l'ancien système (PS 1.6 / début 1.7)
*/15 * * * * curl -s "https://monsite.com/modules/cronjobs/cron.php?token=VOTRE_TOKEN" > /dev/null 2>&1
Solution 3 : Nettoyer les tâches en attente
$ mysql -u prestashop -p prestashop_db
# Voir les jobs en attente
mysql> SELECT * FROM ps_cronjobs;
# Désactiver les jobs problématiques
mysql> UPDATE ps_cronjobs SET active = 0 WHERE id_cronjob = X;
# Vider la queue (selon votre configuration)
mysql> TRUNCATE TABLE ps_cron_task_log;
Import/Export qui bloque
Les imports de produits sont souvent responsables de blocages :
Solution : Import par lots
<?php
// Au lieu d'importer 10000 produits d'un coup
// Découper en lots de 100
// Dans votre script d'import
$batch_size = 100;
$offset = (int) $_GET['offset'] ?? 0;
$products = getProductsToImport($batch_size, $offset);
foreach ($products as $product) {
importProduct($product);
}
// Relancer avec le prochain offset
if (count($products) == $batch_size) {
header("Location: import.php?offset=" . ($offset + $batch_size));
exit;
}
Problème 5 : Overrides en conflit
Le système d’overrides de PrestaShop est puissant mais dangereux : chaque module peut surcharger les classes core, créant des conflits.
Diagnostic
# Lister les overrides
$ ls -la /var/www/prestashop/override/classes/
$ ls -la /var/www/prestashop/override/controllers/
# Chercher les conflits dans les logs
$ grep -i "cannot redeclare\|already defined" /var/log/php8.2-fpm.log
# Voir quel module a installé quel override
$ grep -r "install.*override" /var/www/prestashop/modules/*/
Solutions
Solution 1 : Désactiver temporairement tous les overrides
# Renommer le dossier override
$ mv override override_backup
# Vider le cache
$ rm -rf var/cache/prod/*
# Régénérer le class index
$ php bin/console prestashop:cache:clear
Solution 2 : Identifier l’override problématique
# Comparer avec un PrestaShop propre
$ diff -r override/ /chemin/vers/prestashop-propre/override/
# Vérifier la date de modification des fichiers
$ ls -lat override/classes/*.php | head -10
Solution 3 : Régénérer le class index
# Supprimer le fichier d'index
$ rm var/cache/prod/class_index.php
$ rm var/cache/dev/class_index.php
# Il sera régénéré automatiquement
Solution 4 : Identifier les modules avec overrides
Script de détection
<?php
// Lister les modules qui utilisent des overrides
// Exécuter : php detect_overrides.php
$modules_dir = '/var/www/prestashop/modules/';
foreach (scandir($modules_dir) as $module) {
if ($module == '.' || $module == '..') continue;
$override_dir = $modules_dir . $module . '/override/';
if (is_dir($override_dir)) {
echo "Module: $module
";
foreach (glob($override_dir . '*/*.php', GLOB_BRACE) as $file) {
echo " - " . str_replace($override_dir, '', $file) . "
";
}
}
}
Après une mise à jour PrestaShop majeure (1.7 → 8.x), tous les overrides doivent être vérifiés. Les signatures des méthodes peuvent avoir changé.
Problème 6 : Base de données saturée
PrestaShop génère beaucoup de données : logs, statistiques, paniers abandonnés, recherches…
Diagnostic
# Taille des tables
$ mysql -u prestashop -p prestashop_db -e "
SELECT table_name,
ROUND(data_length/1024/1024, 2) as 'Data (MB)',
ROUND(index_length/1024/1024, 2) as 'Index (MB)'
FROM information_schema.tables
WHERE table_schema = 'prestashop_db'
ORDER BY data_length DESC
LIMIT 20;
"
# Tables à surveiller
+------------------------+-----------+-----------+
| table_name | Data (MB) | Index (MB)|
+------------------------+-----------+-----------+
| ps_log | 450.00 | 120.00 | ← À nettoyer
| ps_connections | 380.00 | 95.00 | ← À nettoyer
| ps_guest | 250.00 | 60.00 | ← À nettoyer
| ps_statssearch | 180.00 | 45.00 | ← À nettoyer
| ps_cart | 150.00 | 40.00 | ← Paniers abandonnés
+------------------------+-----------+-----------+
Solutions
Solution 1 : Nettoyage des tables de logs
$ mysql -u prestashop -p prestashop_db
# Logs PrestaShop (garder 30 jours)
mysql> DELETE FROM ps_log WHERE date_add < DATE_SUB(NOW(), INTERVAL 30 DAY);
# Statistiques de connexion (garder 90 jours)
mysql> DELETE FROM ps_connections WHERE date_add < DATE_SUB(NOW(), INTERVAL 90 DAY);
mysql> DELETE FROM ps_connections_page WHERE time_start < DATE_SUB(NOW(), INTERVAL 90 DAY);
mysql> DELETE FROM ps_connections_source WHERE date_add < DATE_SUB(NOW(), INTERVAL 90 DAY);
# Invités / guests (garder 30 jours)
mysql> DELETE FROM ps_guest WHERE id_guest NOT IN (
SELECT id_guest FROM ps_connections WHERE date_add > DATE_SUB(NOW(), INTERVAL 30 DAY)
);
# Statistiques de recherche (garder 90 jours)
mysql> DELETE FROM ps_statssearch WHERE date_add < DATE_SUB(NOW(), INTERVAL 90 DAY);
# Optimiser les tables après suppression
mysql> OPTIMIZE TABLE ps_log, ps_connections, ps_guest, ps_statssearch;
Solution 2 : Nettoyage des paniers abandonnés
$ mysql -u prestashop -p prestashop_db
# Paniers abandonnés de plus de 30 jours (sans commande associée)
mysql> DELETE FROM ps_cart
WHERE date_upd < DATE_SUB(NOW(), INTERVAL 30 DAY)
AND id_cart NOT IN (SELECT id_cart FROM ps_orders);
# Produits des paniers supprimés
mysql> DELETE FROM ps_cart_product
WHERE id_cart NOT IN (SELECT id_cart FROM ps_cart);
Solution 3 : Script de nettoyage automatique
scripts/clean-database.sh
#!/bin/bash
# Nettoyage automatique BDD PrestaShop
# À exécuter en cron hebdomadaire
DB_USER="prestashop"
DB_PASS="password"
DB_NAME="prestashop_db"
mysql -u $DB_USER -p$DB_PASS $DB_NAME << EOF
-- Logs (30 jours)
DELETE FROM ps_log WHERE date_add < DATE_SUB(NOW(), INTERVAL 30 DAY);
-- Connexions (90 jours)
DELETE FROM ps_connections WHERE date_add < DATE_SUB(NOW(), INTERVAL 90 DAY);
-- Paniers abandonnés (30 jours)
DELETE FROM ps_cart
WHERE date_upd < DATE_SUB(NOW(), INTERVAL 30 DAY)
AND id_cart NOT IN (SELECT id_cart FROM ps_orders);
-- Recherches (90 jours)
DELETE FROM ps_statssearch WHERE date_add < DATE_SUB(NOW(), INTERVAL 90 DAY);
-- Optimisation
OPTIMIZE TABLE ps_log, ps_connections, ps_cart, ps_statssearch;
EOF
echo "✅ Nettoyage BDD terminé : $(date)"
# Cron hebdomadaire (dimanche 3h du matin)
$ crontab -e
0 3 * * 0 /var/www/prestashop/scripts/clean-database.sh >> /var/log/prestashop-cleanup.log
Solution 4 : Ajouter des index manquants
$ mysql -u prestashop -p prestashop_db
# Index fréquemment manquants
mysql> ALTER TABLE ps_cart ADD INDEX idx_date_upd (date_upd);
mysql> ALTER TABLE ps_log ADD INDEX idx_date_add (date_add);
mysql> ALTER TABLE ps_product ADD INDEX idx_active_visibility (active, visibility);
Problème 7 : Limite mémoire PHP
Diagnostic
# Limite actuelle
$ php -i | grep memory_limit
# Erreurs mémoire
$ grep -i "memory" /var/log/php8.2-fpm.log | tail -20
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted
Solutions
Solution 1 : Augmenter dans php.ini
/etc/php/8.2/fpm/php.ini
; PrestaShop recommande 256M minimum, 512M pour gros catalogues
memory_limit = 512M
max_execution_time = 300
max_input_vars = 10000
post_max_size = 64M
upload_max_file_size = 64M
Solution 2 : Configuration dans PrestaShop
config/defines.inc.php
<?php
// Ajouter en haut du fichier
@ini_set('memory_limit', '512M');
@ini_set('max_execution_time', '300');
Solution 3 : Dans .htaccess (Apache)
.htaccess
# Après la section PrestaShop
php_value memory_limit 512M
php_value max_execution_time 300
php_value max_input_vars 10000
Optimiser la consommation mémoire
Paramètres avancés > Performances
Combiner, Compresser et mettre en Cache (CCC) : Activer
Smart cache for CSS : Oui
Smart cache for JavaScript : Oui
Optimisation Apache : Oui
# Limiter le nombre de produits en listing
# Administration > Paramètres boutique > Produits
# "Nombre de produits affichés par page" : 12-20 (pas 100)
Problème 8 : Mode maintenance bloqué
Diagnostic
$ mysql -u prestashop -p prestashop_db
# Vérifier l'état de la maintenance
mysql> SELECT name, value FROM ps_configuration
WHERE name IN ('PS_SHOP_ENABLE', 'PS_MAINTENANCE_IP');
+-------------------+------------------+
| name | value |
+-------------------+------------------+
| PS_SHOP_ENABLE | 0 | ← 0 = maintenance active
| PS_MAINTENANCE_IP | 123.456.789.012 |
+-------------------+------------------+
Solutions
Solution 1 : Désactiver via base de données
$ mysql -u prestashop -p prestashop_db
# Réactiver la boutique
mysql> UPDATE ps_configuration SET value = '1' WHERE name = 'PS_SHOP_ENABLE';
# Ajouter votre IP à la whitelist (optionnel)
mysql> UPDATE ps_configuration SET value = 'VOTRE_IP' WHERE name = 'PS_MAINTENANCE_IP';
# Vider le cache
$ rm -rf var/cache/prod/*
Solution 2 : Script de désactivation d’urgence
scripts/disable-maintenance.php
<?php
/**
* Script d'urgence pour désactiver le mode maintenance
* Accéder via : https://monsite.com/scripts/disable-maintenance.php?token=SECRET
*/
// Sécurité : token unique
if ($_GET['token'] !== 'VOTRE_TOKEN_SECRET') {
die('Accès refusé');
}
// Charger PrestaShop
require_once dirname(__FILE__) . '/../config/config.inc.php';
// Désactiver la maintenance
Configuration::updateValue('PS_SHOP_ENABLE', 1);
// Vider le cache
Tools::clearSmartyCache();
Tools::clearXMLCache();
echo "✅ Mode maintenance désactivé !";
Supprimez ce script après utilisation ou protégez-le avec un token très fort. Ne le laissez pas accessible publiquement.
Mode maintenance SEO-friendly
Le mode maintenance natif de PrestaShop ne gère pas le header Retry-After. Voici comment l’ajouter :
override/classes/controller/FrontController.php
<?php
class FrontController extends FrontControllerCore
{
public function init()
{
parent::init();
// Si maintenance active
if (!(int) Configuration::get('PS_SHOP_ENABLE')) {
// Vérifier si l'IP est autorisée
$maintenance_ips = Configuration::get('PS_MAINTENANCE_IP');
$allowed_ips = array_map('trim', explode(',', $maintenance_ips));
if (!in_array(Tools::getRemoteAddr(), $allowed_ips)) {
// Ajouter le header Retry-After (2 heures)
header('HTTP/1.1 503 Service Unavailable');
header('Retry-After: 7200');
header('Cache-Control: no-store, no-cache, must-revalidate');
}
}
}
}
# Après avoir créé l'override
$ rm -rf var/cache/prod/*
Commandes console PrestaShop essentielles
# === CACHE ===
# Vider tout le cache
$ php bin/console cache:clear --env=prod
# Préchauffer le cache
$ php bin/console cache:warmup --env=prod
# === DEBUG ===
# Activer le mode debug (temporairement)
$ php bin/console prestashop:debug:mode on
# Désactiver le mode debug
$ php bin/console prestashop:debug:mode off
# === BASE DE DONNÉES ===
# Vérifier l'intégrité
$ php bin/console prestashop:db:check
# Mettre à jour la base (après MAJ)
$ php bin/console prestashop:db:upgrade
# === MODULES ===
# Lister les modules
$ php bin/console prestashop:module:list
# Installer un module
$ php bin/console prestashop:module:install monmodule
# Désinstaller un module
$ php bin/console prestashop:module:uninstall monmodule
# === THÈME ===
# Réinitialiser le thème
$ php bin/console prestashop:theme:reset votre-theme
# === GÉNÉRATION ===
# Régénérer les miniatures
$ php bin/console prestashop:image:regenerate
# Réindexer les produits
$ php bin/console prestashop:index:all
# === MAINTENANCE ===
# Activer la maintenance
$ php bin/console prestashop:shop:maintain on
# Désactiver la maintenance
$ php bin/console prestashop:shop:maintain off
Checklist de diagnostic PrestaShop
Besoin d’un expert PrestaShop ?
Support e-commerce spécialisé, disponible 7j/7. Migrations, optimisations, urgences.
Questions fréquentes
Comment accéder au back-office si le front affiche une 503 ?
Souvent, le back-office reste accessible car il utilise un contrôleur différent. Essayez /admin-XXXX/ directement. Si ça ne marche pas : videz le cache via SSH (rm -rf var/cache/prod/*), ou désactivez les modules via base de données, ou renommez le dossier /override/.
PrestaShop 1.6 vs 1.7/8 : les causes sont-elles différentes ?
Les causes principales restent similaires (cache, modules, base de données). Mais PrestaShop 1.7+ utilise Symfony, donc les commandes console sont différentes. Le dossier cache est /var/cache/ au lieu de /cache/. Les overrides fonctionnent pareillement mais le class index a changé de format.
Après une mise à jour PrestaShop, j’ai une 503, que faire ?
1) Videz le cache (rm -rf var/cache/prod/*). 2) Vérifiez les overrides (compatibilité avec la nouvelle version). 3) Mettez à jour les modules tiers. 4) Si persistant, restaurez le backup et testez la mise à jour sur un staging d’abord.
Mon import de produits plante avec une 503, comment faire ?
Les imports massifs dépassent souvent les limites PHP. Solutions : augmentez memory_limit et max_execution_time, découpez l’import en lots (500 produits max), utilisez le cron pour les imports en arrière-plan, ou utilisez un outil d’import professionnel comme Store Commander.