Knowledge Base Guide

Développement local PrestaShop : XAMPP, WAMP, Docker & Linux

Guide complet pour configurer un environnement de développement local PrestaShop — XAMPP, WAMP, MAMP, Docker, Linux natif et comparatif Windows vs Linux.

Pourquoi développer en local ?

Tout développeur PrestaShop expérimenté a une anecdote sur un « test rapide » effectué directement sur une boutique en production, qui a cassé le tunnel de commande ou verrouillé l’accès au back office. Le développement local élimine entièrement cette catégorie de désastre.

  • Sécurité : Testez les modifications de thème, les installations de modules et les mises à jour PHP sans aucun risque pour votre boutique en production.
  • Rapidité : Plus de transferts FTP, plus d’attente dans le panneau d’hébergement. Modifiez un fichier, rafraîchissez le navigateur, voyez le résultat instantanément.
  • Travail hors ligne : Développez dans un train, dans un café sans WiFi ou pendant une panne de votre hébergeur.
  • Test multi-versions : Exécutez PrestaShop 1.7, 8.x et 9.x simultanément. Testez un module sur toutes les versions en une après-midi.
  • Outils de débogage : Utilisez Xdebug pour le débogage pas à pas, activez l’affichage complet des erreurs, profilez les requêtes lentes — impossible sur un hébergement mutualisé.
Si vous modifiez un fichier PHP directement sur votre serveur de production, vous prenez des risques inutiles. Un environnement local se met en place en 30 minutes et vous épargne l’urgence à 3 heures du matin qui finira inévitablement par arriver.

Windows vs Linux vs macOS — une comparaison honnête

Nous sommes des développeurs Linux et nous ne prétendons pas le contraire. Mais nous respectons chaque plateforme et nous vous donnerons une évaluation honnête.

Windows

XAMPP et WAMP facilitent la prise en main. Pour des tests occasionnels, Windows convient parfaitement. Cependant, PrestaShop a été conçu pour des serveurs Linux, ce qui introduit des frictions subtiles :

  • Permissions de fichiers : PrestaShop utilise les permissions Unix (chmod 755/644). Windows a un modèle différent — XAMPP accorde toutes les permissions à tout, masquant des bugs qui apparaissent sur votre serveur Linux.
  • Sensibilité à la casse : MyModule.php et mymodule.php sont le même fichier sous Windows mais des fichiers différents sous Linux. Des modules peuvent fonctionner en local et échouer au déploiement.
  • Fins de ligne : Les CRLF de Windows contre les LF de Linux peuvent provoquer des erreurs « headers already sent » ou casser des scripts shell.
  • Performance : Windows Defender analyse activement les fichiers PHP lors de l’exécution, ajoutant une surcharge mesurable.

Linux

L’environnement le plus proche de votre serveur de production. Même système de fichiers, mêmes permissions, mêmes outils.

  • Docker natif : Pas de couche de virtualisation. Démarrage instantané, performances natives du système de fichiers.
  • Libre et open source : PHP, MySQL, Apache, Nginx, Composer, Node.js, Git, VS Code — tout est gratuit.
  • Parité avec la production : Les bugs que vous trouvez en local existent sur le serveur. Les bugs que vous manquez en local ne vous surprendront (généralement) pas en production.

macOS

Un bon compromis — basé sur Unix, donc les permissions et les chemins fonctionnent comme sous Linux. Docker s’exécute via une machine virtuelle légère (avec une certaine surcharge I/O). Homebrew donne un accès facile à tous les outils : brew install php@8.2 mysql composer.

Notre recommandation

Pour du développement PrestaShop à plein temps, utilisez Linux — en particulier Ubuntu (le plus simple) ou Arch Linux (le plus de contrôle). Nous utilisons personnellement Arch Linux avec KDE Plasma — tout ce que nous utilisons est open source et légalement gratuit.

Pour des tests occasionnels en tant que propriétaire de boutique, XAMPP sous Windows convient parfaitement. Ne laissez personne vous dire de changer de système d’exploitation juste pour tester un module.

Le « meilleur » environnement de développement est celui que vous utilisez réellement. Un XAMPP sous Windows que vous utilisez tous les jours vaut mieux qu’une installation Docker Linux parfaite que vous n’avez jamais pris le temps de configurer.

Option 1 : XAMPP (Windows, macOS, Linux)

XAMPP regroupe Apache, MariaDB, PHP et phpMyAdmin dans un seul installateur. Pour quelqu’un qui veut PrestaShop en local avec un minimum de complications, c’est le chemin le plus rapide.

Installation

1. Téléchargez depuis apachefriends.org. Choisissez la version de PHP correspondant à votre PrestaShop : 7.2-7.4 pour PS 1.7, 8.0-8.2 pour PS 8.x, 8.1-8.3 pour PS 9.x.

2. Installez (Windows : C:\xampp, macOS : /Applications/XAMPP). Démarrez Apache et MySQL depuis le panneau de contrôle.

3. Créez une base de données à l’adresse http://localhost/phpmyadmin — cliquez sur « Nouvelle », nommez-la prestashop, sélectionnez utf8mb4_general_ci.

4. Téléchargez PrestaShop depuis les releases GitHub. Extrayez dans C:\xampp\htdocs\prestashop\.

5. Rendez-vous sur http://localhost/prestashop et suivez l’installateur (serveur de base de données : localhost, utilisateur : root, mot de passe : vide). Supprimez le répertoire install/ une fois terminé.

Ajustements requis dans php.ini

Trouvez php.ini via le panneau de contrôle XAMPP > Apache > Config :

memory_limit = 512M              ; la valeur par défaut de 128M ne suffit pas
max_execution_time = 300         ; la valeur par défaut de 30s est trop courte pour les imports
upload_max_filesize = 64M        ; la valeur par défaut de 2M est trop petite pour les ZIP de modules
post_max_size = 64M
max_input_vars = 20000           ; la valeur par défaut de 1000 — critique pour les formulaires admin PS

Décommentez les extensions requises en supprimant le ; : intl, gd, zip, curl, mbstring. Redémarrez Apache.

Problèmes courants avec XAMPP

Conflit sur le port 80 : Skype ou IIS utilise le port 80. Changez Listen 80 en Listen 8080 dans httpd.conf, puis accédez à http://localhost:8080.

Erreurs « max_input_vars » : Le problème n°1 de XAMPP avec PrestaShop. Les paramètres ne se sauvegardent pas, les combinaisons sont perdues. Mettez la valeur à 20000 dans php.ini.

Page blanche : Vérifiez C:\xampp\apache\logs\error.log — c’est généralement une extension manquante ou une mémoire insuffisante.

Option 2 : WAMP (Windows uniquement)

L’atout majeur de WAMP est le changement de version PHP intégré — clic gauche sur l’icône de la barre des tâches > PHP > Version, et le changement est instantané.

Installation

1. Téléchargez depuis wampserver.aviatechno.net (64 bits). Installez d’abord les Visual C++ Redistributables — WAMP en a besoin.

2. Installez dans C:\wamp64. L’icône de la barre des tâches devient verte lorsque tous les services fonctionnent.

3. Ajoutez des versions PHP depuis la page des addons WAMP. Elles s’intègrent automatiquement.

Hôtes virtuels

WAMP inclut un gestionnaire d’hôtes virtuels : icône de la barre des tâches > Your VirtualHosts > VirtualHost Management. Configurez ps17.local et ps8.local pointant vers des répertoires différents. WAMP met à jour votre fichier hosts et la configuration Apache automatiquement.

Le sélecteur de version PHP de WAMP change la version pour l’ensemble du serveur. Vous ne pouvez pas exécuter PHP 7.4 et 8.2 simultanément pour différents hôtes virtuels — pour cela, vous avez besoin de Docker.

Option 3 : MAMP (macOS)

MAMP est l’équivalent Mac de XAMPP. La version gratuite vous donne un document root avec Apache, PHP et MySQL. MAMP Pro (59 $) ajoute la gestion de plusieurs hôtes, le SSL, le changement de version PHP et Nginx.

Installation rapide : Téléchargez depuis mamp.info, démarrez les services, créez une base de données via phpMyAdmin, placez PrestaShop dans /Applications/MAMP/htdocs/prestashop/, accédez à http://localhost:8888/prestashop.

Si les performances de Docker sur votre Mac sont inacceptables (courant avec les volumes montés), utilisez plutôt Homebrew : brew install php@8.2 mysql composer vous offre des performances natives.

Option 4 : installation native sous Linux

Installez et configurez chaque composant directement. Maximum de contrôle, meilleures performances, le plus proche de la production.

Ubuntu / Debian

sudo apt update
sudo apt install apache2
sudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-gd php8.2-intl \
  php8.2-curl php8.2-zip php8.2-xml php8.2-mbstring php8.2-bcmath
sudo apt install mysql-server
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

Arch Linux : sudo pacman -S apache php php-fpm php-gd php-intl php-sodium mariadb composer, puis initialisez MariaDB et activez les services avec systemctl.

Hôte virtuel Apache

Créez /etc/apache2/sites-available/ps8.local.conf avec un VirtualHost pointant ServerName ps8.local et DocumentRoot vers votre répertoire PrestaShop. Définissez AllowOverride All et redirigez PHP vers FPM. Activez avec sudo a2ensite ps8.local.conf && sudo a2enmod rewrite proxy_fcgi && sudo systemctl reload apache2. Ajoutez 127.0.0.1 ps8.local dans /etc/hosts.

Permissions des fichiers

Définissez le propriétaire sur www-data, les répertoires sur 755, les fichiers sur 644, et les répertoires accessibles en écriture (var/, cache/, img/, upload/, config/) sur 775. Les permissions de fichiers sont l’obstacle n°1 sous Linux — si PrestaShop affiche une page blanche, vérifiez le journal d’erreurs Apache pour « Permission denied ».

Option 5 : Docker — recommandé pour le développement sérieux

Chaque version de PrestaShop s’exécute dans son propre conteneur avec son propre PHP et MySQL. Rien ne entre en conflit, rien ne fuit. Consultez notre guide Docker complet pour des instructions détaillées.

docker-compose.yml rapide

services:
  prestashop:
    image: prestashop/prestashop:8.2
    ports: ["8085:80"]
    environment:
      DB_SERVER: db
      DB_USER: prestashop
      DB_PASSWD: prestashop
      DB_NAME: prestashop
      PS_DOMAIN: localhost:8085
      ADMIN_MAIL: admin@yourshop.com
      ADMIN_PASSWD: your_secure_password
    volumes: [ps-files:/var/www/html]
    depends_on: [db]
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root_pass
      MYSQL_DATABASE: prestashop
      MYSQL_USER: prestashop
      MYSQL_PASSWORD: prestashop
    volumes: [db-data:/var/lib/mysql]
volumes:
  ps-files:
  db-data:

Démarrage : docker compose up -d. Accédez à http://localhost:8085.

Nous exécutons plus de 25 conteneurs PrestaShop sur un seul serveur — de PS 1.6 à 9.1 — pour le développement et le test de modules. Docker est le seul moyen pratique de gérer cela. Même avec deux ou trois versions, il vous évite les conflits de dépendances.

Après l’installation : configuration commune à toutes les méthodes

Extensions PHP requises

PrestaShop refusera de s’installer ou fonctionnera mal sans celles-ci :

  • intl — formatage des devises, gestion des locales (la plus souvent manquante)
  • gd — traitement d’images, miniatures, filigranes
  • curl — passerelles de paiement, API webservice
  • mbstring — gestion des chaînes UTF-8
  • zip — installation de modules depuis des ZIP
  • xml — import/export, webservice
  • pdo_mysql — connectivité base de données
  • opcache — cache de bytecode (techniquement optionnel, pratiquement indispensable)

Vérification : php -m | grep intl ou créez une page phpinfo() (supprimez-la ensuite).

Activer les URL simplifiées

Apache : sudo a2enmod rewrite et définissez AllowOverride All dans votre vhost. Nginx : Utilisez try_files $uri $uri/ /index.php?$args;. Puis activez dans Back Office > Paramètres de la boutique > Trafic & SEO.

Test des e-mails avec Mailpit

Capturez tous les e-mails sortants en local au lieu d’envoyer de vrais e-mails :

docker run -d --name mailpit -p 8025:8025 -p 1025:1025 axllent/mailpit

Configurez le SMTP PrestaShop : serveur localhost, port 1025, pas de chiffrement, pas d’authentification. Consultez les e-mails à l’adresse http://localhost:8025.

Configuration de l’IDE

VS Code (gratuit) : Installez les extensions PHP Intelephense + PHP Debug. Configurez Xdebug avec port: 9003 et pathMappings pointant le chemin de votre conteneur vers votre dossier de travail. PHPStorm (payant) : Outils PHP, Xdebug, base de données et intégration Docker intégrés. Rentable si PHP est votre métier.

Importer une boutique en production en local

Tester avec vos véritables produits, thème et modules permet de détecter des bugs réels qu’une installation vierge ne peut pas révéler.

Export et import de la base de données

# Export depuis la production (via SSH — phpMyAdmin expire sur les grosses bases)
mysqldump -u db_user -p database_name > prestashop_backup.sql

# Créer la base locale
mysql -u root -p -e "CREATE DATABASE prestashop_local CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"

# Import
mysql -u root -p prestashop_local < prestashop_backup.sql

Copier les fichiers et mettre à jour la configuration

Téléchargez les répertoires critiques (img/, modules/, themes/, config/, override/, upload/) via rsync : rsync -avz user@server:/path/to/prestashop/ /local/prestashop/

-- Changer le domaine en local
UPDATE ps_shop_url SET domain = 'localhost:8080', domain_ssl = 'localhost:8080' WHERE id_shop_url = 1;

-- Désactiver le SSL
UPDATE ps_configuration SET value = '0' WHERE name = 'PS_SSL_ENABLED';
UPDATE ps_configuration SET value = '0' WHERE name = 'PS_SSL_ENABLED_EVERYWHERE';

Éditez app/config/parameters.php (PS 1.7/8.x) ou config/settings.inc.php (PS 1.6) avec les identifiants de votre base de données locale. Videz le cache : rm -rf var/cache/*.

Après l’importation, créez un nouveau compte administrateur pour l’utilisation locale au lieu d’utiliser les identifiants de production. Cela évite les modifications accidentelles affectant la production si votre processus de travail dérape.

Problèmes courants en développement local

Écran blanc après l’installation

Vérifiez toujours le journal d’erreurs en premier — la réponse s’y trouve presque toujours :

# Apache: tail -50 /var/log/apache2/error.log
# XAMPP: C:\xampp\apache\logs\error.log
# PrestaShop: tail -50 var/logs/dev.log

Extension manquante : Le journal affiche Call to undefined function — installez l’extension concernée. Mémoire : Le journal affiche Allowed memory size exhausted — augmentez memory_limit. Mauvaise version PHP : PS 8.x sous PHP 7.4 provoque des erreurs de type — vérifiez avec php -v.

Impossible d’accéder au panneau d’administration

mod_rewrite n’est pas activé ou le fichier .htaccess n’est pas lu. Activez rewrite : sudo a2enmod rewrite. Définissez AllowOverride All dans votre vhost. Pour XAMPP : changez AllowOverride None en AllowOverride All dans httpd.conf.

Extrêmement lent sous Windows

Antivirus : Ajoutez vos répertoires XAMPP et PrestaShop aux exclusions de Windows Defender (Paramètres > Protection contre les virus et menaces > Exclusions).

Docker sur WSL2 : Stockez les fichiers dans le système de fichiers natif de WSL2 (/home/you/prestashop/), pas sur un lecteur Windows monté (/mnt/c/...) — la différence de performances est spectaculaire.

Images qui ne se chargent pas

GD manquant : Installez php-gd. Permissions : chown -R www-data:www-data img/. Boutique importée : Régénérez les miniatures depuis Back Office > Apparence > Images.

Échec de l’installation d’un module

« Cannot upload » : Augmentez upload_max_filesize et post_max_size à 64M. « Cannot unzip » : Installez php-zip. « Permission denied » : chmod 775 modules/. « Class not found » : Supprimez var/cache/*/class_index.php.

Connexion à la base de données refusée

MySQL ne fonctionne pas — vérifiez avec sudo systemctl status mysql et démarrez-le si nécessaire. Pour « Access denied », vérifiez que les identifiants correspondent entre votre fichier de configuration et les autorisations de l’utilisateur MySQL.

Conseils pour le flux de travail en développement

Activez le mode debug : Dans config/defines.inc.php, définissez define('_PS_MODE_DEV_', true); pour obtenir les traces de pile et les détails SQL. Ne jamais activer en production.

Désactivez le cache : Back Office > Paramètres avancés > Performances — mettez le cache Smarty sur « Non » et désactivez CCC. Le cache masque vos modifications.

Utilisez Git : git init && git add . && git commit -m "Initial structure" dans le répertoire de votre module. Chaque modification est suivie. git diff montre ce qui a changé, git checkout -- file.php annule les modifications d’un fichier.

Référence rapide : exigences par version

  • PS 1.6.1.x : PHP 5.6-7.1, MySQL 5.0-5.7
  • PS 1.7.0-1.7.6 : PHP 7.1-7.3, MySQL 5.5-5.7
  • PS 1.7.7-1.7.8 : PHP 7.2-7.4, MySQL 5.6-8.0
  • PS 8.0-8.1 : PHP 8.0-8.1, MySQL 5.7-8.0
  • PS 8.2 : PHP 8.1-8.2, MySQL 5.7-8.0 / MariaDB 10.x
  • PS 9.x : PHP 8.1-8.3, MySQL 8.0 / MariaDB 10.11+
Vérifiez toujours les exigences système officielles pour votre version exacte — elles changent avec les versions mineures.

Et ensuite ?

  • Développement de modules : La documentation officielle pour développeurs couvre la structure des modules et le système de hooks.
  • Configurer Xdebug : Le débogage pas à pas est le plus grand gain de productivité pour le développement PHP.
  • Explorer Docker : Si vous dépassez les limites de XAMPP/WAMP, notre guide Docker couvre les configurations multi-versions.
  • Déploiement sécurisé : Consultez notre guide de pré-production et notre guide de sauvegarde pour le chemin du local vers la production.

L’investissement dans un environnement local correct est rentabilisé chaque jour. Trente minutes de mise en place vous épargnent des heures de débogage et préviennent les incidents en production.

More guides available

Browse our knowledge base for more practical PrestaShop tutorials, or reach out if you need help.

Loading...
Back to top