PrestaShop 9.1 est la dernière version majeure du CMS e-commerce (la branche 8.2 reste maintenue, avec des correctifs de sécurité comme la 8.2.3). Voici des astuces pratiques de configuration, de performance et de durcissement. PrestaShop reposant désormais sur Symfony, beaucoup d’opérations passent par la console bin/console, lancée à la racine du projet.

La console PrestaShop (bin/console)

# Vider le cache (Symfony)
php bin/console cache:clear
# Lister les commandes specifiques a PrestaShop
php bin/console list prestashop
# Lire / ecrire un parametre de configuration
php bin/console prestashop:config get PS_SHOP_DOMAIN
php bin/console prestashop:config set PS_SSL_ENABLED --value 1

Désactiver le mode debug en production

En production, le mode debug doit être désactivé (il affiche les erreurs et ralentit la boutique). Ça se règle dans config/defines.inc.php :

// Mode developpeur : false en PRODUCTION
define('_PS_MODE_DEV_', false);

PrestaShop derrière un reverse proxy (SSL offload)

Quand un reverse proxy (Nginx, HAProxy, Traefik…) termine le HTTPS et parle à PrestaShop en HTTP clair, PrestaShop teste $_SERVER[‘HTTPS’] qui n’est jamais défini : résultat, boucles de redirection, contenu mixte et SSL affiché comme « désactivé » dans le back-office. La parade tient en quelques étapes. D’abord, en haut de config/defines.inc.php :

// Tenir compte du protocole reel transmis par le reverse proxy (SSL offload)
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

Ensuite, on active le SSL côté PrestaShop (les modules de paiement vérifient PS_SSL_ENABLED en base, donc cette étape compte) :

php bin/console prestashop:config set PS_SSL_ENABLED --value 1
php bin/console prestashop:config set PS_SSL_ENABLED_EVERYWHERE --value 1

Enfin, le proxy doit transmettre les bons en-têtes, et le domaine doit être correct dans Paramètres de la boutique → Trafic & SEO → URL de la boutique :

# Nginx (bloc qui transmet vers le backend PrestaShop)
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;

Performance : cache et templates

En production, activez la recompilation « jamais » des templates Smarty et le cache, et activez le CCC (Combine, Compress, Cache des CSS/JS) depuis Paramètres avancés → Performances :

# Ne jamais recompiler les templates (production)
php bin/console prestashop:config set PS_SMARTY_FORCE_COMPILE --value 0
# Activer le cache Smarty
php bin/console prestashop:config set PS_SMARTY_CACHE --value 1

Pour les boutiques à fort trafic, activez en plus un cache serveur (Memcached ou Redis) dans le même écran Performances.

Durcir la sécurité

PrestaShop renomme automatiquement le dossier d’administration à l’installation (par ex. admin7xk2) : conservez ce nom aléatoire et n’utilisez jamais « /admin ». Verrouillez aussi les permissions de fichiers :

# Permissions : repertoires en 755, fichiers en 644
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

Enfin, maintenez PrestaShop à jour : la 8.2.3 corrige par exemple une faille d’énumération d’e-mails. Appliquez les versions de sécurité dès leur sortie.