Voici quelques étapes et commandes pour déplacer un Prestashop version 1.7 en développement sur votre machine vers un serveur en production ou autre hébergement.

Sur la machine, serveur, hébergement avec le Prestashop source

En local ou sur le serveur de test, on effectue une sauvegarde de la base et une copie complète du code source du Prestashop.

  • Aller dans le menu Paramètres avancés > Base de données > Sauvegarde BDD et cliquer sur "créer une sauvegarde" pour lancer la création d'une sauvegarde de la base de données que vous pourrez télécharger.
  • Autre méthode : utiliser une option sur votre hébergement pour obtenir un dump de la base de donnée ou faites un export entier de la base dans phpmyadmin (pour info, c'est un outil à utiliser avec beaucoup de prudence. D'une part car vous pouvez supprimer totalement des tables ou la base entière, d'autre part car des failles sont découvertes régulièrement et celui-ci peut donc servir de vecteur d'attaque) si celui-ci n'est pas bien protégé et mis à jour.
  • Faire une archive / copie complète du répertoire du Prestashop (la racine de l'archive doit contenir les répertoires admin..., classes, ...) : soit par FTP, soit avec un accès SSH ou plus simplement via le panel de l'hébergeur si disponible

Trouver la base connectée à un Prestashop

Pour trouver quelle base est connectée au Prestashop, il suffit d'aller dans le menu Paramètres avancés > Informations et regarder la partie "Informations sur la base de données". Il est indiqué le nom de la base de données : "Nom MySQL".
Le nom d'utilisateur utilisé est également indiqué à la ligne "Utilisateur MySQL"

On peut aussi avoir tous les renseignements nécessaires dans le fichier : app/config/parameters.php :

'database_host' => '127.0.0.1',
'database_port' => '',
'database_name' => 'nomdemabase',
'database_user' => 'utilisateur',
'database_password' => 'monmotdepasse,

Sur Prestashop 1.6, c'était le fichier /config/settings.inc.php qui contenait ces informations.

Sur la machine, serveur, hébergement cible pour le Prestashop à installer

Sur le nouvel hébergement ou nouveau serveur, on crée une nouvelle base de données pour accueilir la base du Prestashop à installer et on copie les fichiers sources préalablement sauvegardés.

  • Créer une base de données mysql portant le même nom (pas obligatoire mais plus simple) que celle du Prestashop source à installer.
  • Créer un utilisateur avec accès total à cette base. Vous pouvez utiliser le même mot de passe que celui indiqué dans les lignes du fichier app/config/parameters.php
  • Option : utiliser la ligne de commande Mysql et effectuer des requêtes pour créer la base, l'utilisateur et lui donner un accès total.

Ci-dessous les requêtes MYSQL à éxécuter :

CREATE DATABASE nomdemabase CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'utilisateur'@'localhost' IDENTIFIED BY 'monmotdepasse';
GRANT ALL PRIVILEGES ON `nomdemabase`.* TO 'utilisateur'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

La ligne de commande mysql est accessible en se connectant en SSH au serveur ou à l'hébergement et en tapant la commande "mysql" ou "mysql -u utilisateur -p" et le mot de passe.

  • Importer le dump, sauvegarde de la base données sur cette nouvelle base via phpmyadmin ou en ligne de commande :

    zcat 1572360669-77432958.sql.gz | mysql -u utilisateur -p nomdemabase

    Tapez le mot de passe de l'utilisateur et attendez la fin de l'import sql.

  • Modifier l'url de la boutique en base de données
  • Celà dépend de l'url souhaitée sur le nouvel hébergement.
    Par exemple mon-prestashop.com ou mon-prestashop.com/maboutique.
    Dans ce cas domain = mon-prestashop.com et physical_uri="/maboutique/".
    Si l'url n'est que mon-prestashop.com, physical_uri devra être uniquement "/".

    UPDATE `ps_shop_url` SET domain="localhost", domain_ssl="localhost" WHERE id_shop = 1;
    UPDATE `ps_shop_url` SET physical_uri="/monprestashop/" WHERE id_shop = 1;

  • Option : Modifier l'url de la boutique en back office

Il est aussi possible de modifier l'url de la boutique en se connectant au back office via l'url :
mon-prestashop.com/admin12345/index.php

admin12345 est bien entendu à remplacer par le bon répertoire admin de votre Prestashop.

Une fois connecté, Prestashop vous demandera s'il faut utiliser cette nouvelle url, cliquez pour accepter et effectuer cette modification.

  • Si besoin, désactiver le SSL sur la boutique

En effet parfois vous avez besoin de désactiver le SSL car l'hébergement cible n'a pas encore de certificat SSL ou le HTTPS n'est pas encore activé. Dans ce cas une petite requête SQL suffit pour désactiver le SSL :

update `ps_configuration` set value=0 WHERE (name = "PS_SSL_ENABLED") OR (name = "PS_SSL_ENABLE_EVERYWHERE") ;

Désactiver un module Prestashop via la base de données MYSQL

Lors des tests avant d'activer la boutique et la mettre en production, on doit parfois désactiver des modules pour ne pas qu'ils effectuent certaines tâches (comme envoyer des commandes à des fournisseurs, envoyer des emails, ajouter des statistiques...)

On peut désactiver certains modules directement via des requêtes SQL. Par exemple pour désactiver le module Google Analytics :

UPDATE `ps_module` set active=0 WHERE name LIKE "ganalytics";

Quelques manipulations pour corriger des problèmes après migration d'un Prestashop 1.7

Après avoir déplacé une boutique Prestashop on a souvent quelques problèmes à cause du cache ou de l'url rewriting (réécriture d'url).

Ci-dessous quelques trucs qui corrigent souvent bien des problèmes.

  • Supprimer le cache Prestashop dans le menu Paramètres avancés > Performances puis bouton vider le cache. Vous pouvez aussi mettre le Cache à Non et enregistrer le temps de tester la migration.
  • Régénérer le fichier .htaccess en enregistrant la configuration dans Paramètres de la boutique > Traffic et SEO. Vous pouvez également désactiver la réécriture d'URL en mettant le bouton à NON le temps de tester la boutique.

Dans certains cas, certaines boutiques où les modules sont nombreux, des erreurs de cache symfony peuvent intervenir. On peut supprimer le répertoire /var/cache/prod et /var/cache/dev ce qui corrige souvent ces erreurs.

Passer la boutique en mode debug

En cas de bugs sévères, on peut passer la boutique en mode Debug directement en Back office dans le menu Paramètres avancés > Performances en mettant "Mode debug" à OUI.
On peut aussi passer la boutique en mode debug en modifiant le fichier config/defines.inc.php et en remplaçant :
define('_PS_MODE_DEV_', false);
par define('_PS_MODE_DEV_', true);