La meilleure façon de migrer un site PrestaShop de 1.4 à 1.6 ou 1.7

Publié le : 02/10/2015 09:45:14
Catégories : PrestaShop Rss feed

La meilleure façon de migrer un site PrestaShop de 1.4 à 1.6 ou 1.7

Problèmes avec la méthode officielle de migration proposée par PrestaShop :

Il ne se passe pas une semaine sans qu'un utilsateur de mes modules me demande si c'est ou non une bonne idée de migrer un "vieux" site vers la dernière version de PrestaShop 1.6 ou 1.7, et si oui, comment faire.

Ayant du moi même me lancer dans l'aventure de la migration de ce site de 1.4.5.3 vers 1.6.1, j'ai pu comme presque tout le monde, me rendre compte que l'outil de migration automatique de PrestaShop (module "one click upgrade" ou "migration en 1 clic") était totalement incapable d'aller au bout du processus. Le nombre d'erreurs et de plantages suite à l'utilisation de cet outil est assez incroyable, dés que l'on part d'une version assez ancienne.

Si vous souhaitez malgré tout l'essayer, mon meilleur conseil sera de le faire pas à pas:

1-migration en 1 clic de votre version actuelle vers la dernière version 1.4

2-migration en 1 clic vers la dernière 1.5

3-migration en  1 clic vers la dernière 1.6

Pour la 1.7, je rappelle que les modules compatibles 1.6 ne le sont pas forcément sur la 1.7 et surtout que les thèmes 1.6 ne fonctionnent pas sur 1.7. Inutile d'essayer, ce n'est pas la même technologie qui est utilisée.

En conclusion la probabilité de succés avec cette méthode est assez faible.

Méthode de mise à jour de PrestaShop alternative, plus technique, mais qui plante moins souvent :

Il y a donc mieux, beaucoup mieux et je vais partager avec vous cette méthode vraiment géniale. Pour résumer il s'agit de:

1/Migrer la base de données dans le nouveau format 1.6, en conservant ses données, sans faire en même temps de migration du code de PrestaShop.

2/Associer la base ainsi mise à jour à un Prestashop 1.6 tout neuf, vierge, pour se retrouver avec un site 1.6 totalement focntionnel, avec le thème par défaut, mais utilsant vos données.

3/Changer le thème du site, ré-installer vos modules complémentaires (versions compatibles 1.6 bien sûr)

Choix de l'hébergement :

Avant de présenter cette méthode pas à pas, je voudrais revenir sur le choix de l'hébergement pour votre nouveau site. En effet si votre site actuel est lent, effectuer une mise à jour majeure de PrestaShop est je pense la bonne occasion de choisir le bonne solution d'hébergement.

Mutualisé ou dédié ? : En dessous de 1000 commandes par mois, le trafic du site ne justifie pas d'investir dans un dédié.

Il y a une quantité incroyable d'hébergeurs et ne peut parler en toute indépendance que de ceux que j'ai eu l'occasion de tester, au nombre de 4 :

LWS : solution pas chère mais que je déconseille fortement si pour vous la notion de support est importante. Réponses aux questions par un système de ticket, souvent seulement le lendemain et la plupart du temps complétement à coté du problème posé.

OVH : tout le monde connait, numéro 1 mondial. Mais franchement je ne sais pas pourquoi. Je ne compte plus le nombre de fois ou j'ai du travailler sur des sites hébergés en mutualisé chez OVH et qui étaitent par intermitence très très lent. Il est une rumeur qui dit qu'OVH aurait mis en place sur ses serveurs mutualisés un système de "protection" de la bande passante, limitant la vitesse ou le volume des requètes SQL autorisées sur un site, pour ne pas pénaliser les autres sites du même serveurs. Je déconseille donc aussi.

O2Switch : sitolog à longtemps été hébergé chez eux et j'ai encore pour un autre site un compte chez eux. Je dirais que ça reste un bon choix très économique car tout est "illimité" pour 6€ par mois. Leur support est aussi très disponible et compétent. Mais ils ont fait le choix de n'avoir qu'une seule offre au catalogue et globalement j'étais déçu par la vitesse du serveur ainsi que son manque de stabilité (fréquents arrêt sintermittents de quelques minutes, jamais expliqués). De l'avis d'O2Switch, à cause de mon PrestaShop, et n'ayant pu obtenir de l'assistance pour l'optimiser, j'ai préferré partir...

Yoorshop : j'ai donc migré mon site d'O2Switch à Yoorshop, autre hébergeur français, à l'identique et ai pu constater tout de suite une nette amélioration en terme de vitesse. Pour un peu plus cher (16€/mois), j'ai des sauvegardes automatiques, un certificat SSL et une solution vraiment optimisée pour la vitesse. Leur support est tip top. Seul bémol avec cet hébergeur, la communication est un peu "rude" parfois. Je suis de l'ancienne école et apprécie la courtoisie. Ce dernier point mis à part, et même si je sais qu'il existe sans doute d'autres alternatives, je recommende à ce jour franchement le choix de Yoorshop. Mon nouveau site, une fois passé en PS 1.6 tourne franchement plus vite qu'avant.

Pas à pas de la méthode alternative de migration :

Imaginons que votre vieux PrestaShop soit sur le serveur dans un dossier /actuel/

1/Faites une , non deux, sauvegardes de l'intégralité de votre site, fichiers de /actuel/ (avec Filezilla pour une sauvegarde sur PC ou bien plus rapide avec le gestionnaire de fichiers de votre Cpanel pour une sauvegarde sur le serveur lui même) et base de données (avec PrestaShop ou avec PHPMyAdmin).

Au fait, ça va de soit sans le dire, mais l'écrire c'est encore mieux : je décline toute responsabilité si la procédure ci-dessous échouait et que vous ayez une perte de données ou un impact négatif quel qu'il soit.

2/Pendant l'opération, il est conseillé de mettre la boutique actuelle en mode maintenance. Donc il est préferrable de le faire la nuit lorsque tout le monde dort pour éviter de perdre des commandes.

Important : si vous n'étes pas à l'aise avec l'idée de faire tout cela directement sur le serveur, il est aussi possible, voir recommendé, d'installer un émulateur de serveur pour PC (comme EasyPHP) et de tout faire en local. Puis de téléverser le nouveau site et la nouvelle base de données une fois que tout fonctionne en local.

Mon site nécessitant beaucoup de personnalisation après la migration, c'est d'ailleurs ce que j'ai fait, pour éviter de devoir laisser trop longtemps le site en maintenance.

3/Créez sur le serveur (le nouveau si vous avez changé d'hébergement) un nouveau répertoire. Je l'appelle /nouveau

4/En option, par sécurité, vous pouvez aussi créer un autre répertoire de travail temporaire sur le serveur et dupliquer dedans l'intégralité de votre site actuel. Je l'appelle /ancien

Sachant que c'est très long, j'ai pour m'a part sauté cette étape, le risque me semblant faible ayant auparavant fait de bonnes sauvegardes.

5/Téléchargez Prestashop 1.6, dézippez le fichier sur le PC dans un dossier temporaire et avec un outil commme Filezilla, transferez l'intégralité du contenu de ce dossier, avec les sous dossiers, dans le répertoire /nouveau. Allez boire un café, c'est très long....

6/Une fois le transfert terminé, renommez le dossier admin de ce nouveau Prestashop du même nom que le dossier admin de votre ancien Prestashop

7/Donnez le droit d'accés 777 au fichier setting.inc.php contenu dans le dossier admin du nouveau PrestaShop.

8/Copiez depuis /ancien/ (ou /actuel/), vers /nouveau/  les dossiers suivants avec leur contenu:

/mails

/img, sauf les sous dossiers /img/admin et /img/jquery-ui

/download

/upload

9/Lancer PHPMyAdmin sur le nouveau serveur (ou le même si vous ne changez pas de serveur), créez une nouvelle base de données, que je vais appeler "ancienneamigrer" et importez dedans votre dernière sauvegarde de votre base de données actuelle.

10/Copier depuis /ancien/config/ vers nouveau/config/ le fichier settings.inc.php (remplacement du fichier déjà présent dans ce dossier)

11/Editez le contenu de ce fichier (n'importe quel traitement de texte le permet) de la manière suivante :

define(‘__PS_BASE_URI__’, ‘/nouveau/’);
define(‘_THEME_NAME_’, ‘default-bootstrap’);
define(‘_DB_NAME_’, ‘ancienneamigrer′);
define(‘_DB_SERVER_’, ‘localhost’);
define(‘_DB_USER_’, ‘root’);
define(‘_DB_PASSWD_’,  ‘’);

Note: Adaptez bien sûr root et le mot de passe selon vos propres réglages de SQL.

12/ C'est ici que tout se passe : depuis votre navigteur internet, allez à cette adresse :

urlduserveur/nouveau/install/upgrade/upgrade.php

ou si vous travailez en local:

localhost/nouveau/install/upgrade/upgrade.php

Cela lance un script de migration de votre base de données actuelle vers le format (ou structure) de la dernère version de PrestaShop, tout en conservant les données.

Au bout de quelques secondes ou minutes,, si la page affiche un fichier xml dont la 1ere ligne contient

action result = ok error =

C'est que tout s'est bien passé. Bravo.

Dans le cas contraire il va falloir analyser et comprendre les erreurs indiquées (ou pas) dans le fichier xml, les corriger et relancer le script. Ce que j'ai pu observer:

-Si vous avez pleins d'erreurs un peu partout : l'étape 9 n'a pas bien focntionnée, il manque des tables dans la base.

-Erreur 5 : problème de droits d'écriture dans settings.inc.php, remettez le en 777

-Erreur 28 : soucis avec la ligne

define(‘__PS_BASE_URI__’, ‘/nouveau/’);  dans le fichier setting.ic.php

-Page blanche : il y a une erreur de syntaxe dans le fichier setting.inc.php comme un guillemet manquant.

13/ Si tout est ok, testez le nouveau site (commencez par le back office avec votre logging habituel). Devrait être un beau site en version 1.6, avec son thème par défaut et vos anciennes données.

14/ Supprimez le dossier /nouveau/install/ par sécurité.

15/ Mettez en place vos modules, choissisez un autre thème ou personnalisez le thème par défaut, etc...

16/ Si vous avez travaillé en local, quand tout est ok, mettez le en maintenance, dupliquez le tout, fichiers et base vers le serveur, adaptez en fonction le fichier setting.inc.php, testez et sortez du mode maintenance quand tout fonctionne bien.

17/ Satisfait ?, dites le ! Il vous reste encore une étape prenant 20 sec, facultative, mais vous en serez remercié, merci de partager cette page sur les réseaux sociaux grâce aux boutons présents en bas de l'article.

18/Il vous reste à gérer votre catalogue de manière optimale. Si ce n'est pas déjà fait, c'est le bon moment pour vous équiper de solutions professionnelles d'édition de masse, PrestaCatégories pour la création de catégories et l'organisation des produits et PrestaPricing pour la création et modification des produits, l'ajout de photos, l'importation, la gestion des soldes et tellement plus. L'essayer c'est l'adopter :

Autres soucis rencontrés lors de la mise à jour:

Les images des produits n'apparaissent pas => Activez le mode "Legacy images", puis le déplacement des images dans les sous dossiers et désactivez le mode "Legacy images". Si ca suffit pas, lancez la regénération des vignettes.

Nombreuses erreurs 404 en local => désactivez la redirection des URLs

Nombreuses erreurs 404 en distant => désactivez la redirection des URLs et réactivez la pour reconstruire le .htAccess.

Le backoffice ou le site s'afichent sans la mise en page, souvent une erreur avec la ligne define(‘__PS_BASE_URI__’, ‘/nouveau/’);  dans le fichier setting.ic.php

Il existe malheureusement encore beaucoup de cas ou cette méthode alternative ne passe pas. En témoigne certains commentaires ci dessous. Et il n'est pas toujours facile ou possible d'en comprendre la raison et de la corriger.

Reste donc la 3ieme solution de dernier recours. Son grand avantage : elle fonctionne dans tous les cas.

3ieme méthode de migration, par export / import xls grâce à nos modules PrestaShop :

1/Installation d'un PrestaShop 1.6 ou 1.7 tout neuf avec son thème et ses modules.

2/Exportation du catalogue depuis votre PrestaShop 1.4 ou 1.5 grâce à PrestaPricing et PrestaCatégories dans le format xlsx ou csv. Nous recommandons de créer trois fichiers distincts, un pour les catégories, un pour les produits et prix spécifiques, un pour les déclinaisons (avec ou sans prix spéciaux et photos spécifiques)

3/Importation du catalogue complet ou partiel dans PrestaShop 1.6 ou 1.7 grâce à PrestaPricing PRO à partir des fichier.

PRESTAPRICING © pour Prestashop

Créez ou importez vos produits et modifiez les en masse

  • Puissance
  • Rapidité
  • Souplesse

Info sur PrestaPricing

Avantages de cette méthode :

-Fonctionne quelques soit les versions de PrestaShop et la taille de la base.

-Il n'y a pas de conversion de format de base de données, donc peu de risque d'erreur. C'est notre module qui se charge d'importer les données au bon format.

-L'investissement de ces deux modules sera très vite rentabilisé, car vous découvrirez toute la puissance de ces outils qui ne sont pas juste des modules d'importation, qui une vraie alternative à toute la partie gestion du catalogue du back office, grâce à des fonctionnalités de gestion en masse dont on a ensuite du mal à se passer.

-Le format des fichier xls ou csv produits par l'outil export sont directement compatibles avec la fonctionnalité d'importation. Le travail de mappage des colonnes est donc rapide et intuitif.

-Une option permet de ré-utiliser les identifiants des produits et catégories. Ainsi les Urls seront conservées et il n'y aura pas d'impact sur le SEO (référencement des pages).

Inconvénient de la méthode :

-Actuellement ces applications ne savent exporter et importer "que" le catalogue (produits, catégories, déclinaisons, attributs, caractéristiques, images,...) et pas les commandes et les clients. Mais il existe d'autres modules sur Presta Addons qui savent très bien se charger de cette partie (n'hésitez pas en commentaire à partager votre solution).

Comment faire ? :

1/ Acheter et installer les deux modules (PrestaCatégories n'est nécessaire que si vous souhaitez importer les catégories). Plus exactement les deux applications, car il s'agit de logiciels Windows.

Astuce : remise de 15% si achetés ensemble sous forme d'un pack

2/ Suivre ce tuto concernant la fonctionnalité importation csv ou xls

Et soliicitez notre assistance si vous ne vous en sortez pas seul.

J'espère que cet article saura en aider plus un, la migration d'un site PrestaShop d'une version à une autre étant une vraie galère, les solutions qui focntionnent vraiment sont peu nombreuses.

Crdlt

Franck

Partager ce contenu

Comments (14)

etienne


03/09/2017 23:39:27

Merci pour ce tutos très clair et précis. Après plusieurs essai, ça marche enfin...

Franck


21/03/2017 12:12:14

kpi_lang n'est pas une table standard de PrestaShop. Elle doit venir d'un module et le script de PrestaShop ne doit pas arriver à gérer cette table. J'aurais tendance à vous suggérer de dé-installer ce module avant la migration et de le ré-installer ensuite. Faites une sauvegarde des tables de ce module avant et ré-installez les ensuite..

delf


21/03/2017 12:02:41

Bonjour, je viens de tenter la migration j'ai le message d'erreur suivant : error="34" j'ai identifié que le problème venait de ma table: ps_configuration_kpi_lang Mais je ne comprend pas comment la modifier pour régler le problème. Merci par avance Delf

Gee


30/06/2016 16:42:33

Bonjour !Merci pour ce tuto. Au moment de l'upgrade j'ai cette erreur : "This XML file does not appear to have any style information associated with it. The document tree is shown below." Avec en dessous la balise : ... qui quand je l'ouvre donne une multitude (une centaine voire plus...) de balises du style : ...Est ce que quelqu'un comprends le soucis ..?Un grand merci d'avance.

Franck - Sitolog


18/05/2016 19:53:30

Steve et Christele,Désolé, mais je n'ai pas de solution à vous proposer, je n'ai pas rencontré ce genre de cas.Christele l'erreur indique un doublon sur une clé composée unique, dans la table ps_access. Je pense qu'il faut aller analyser cette table (les index), trouver le doublon et le supprimer. Mais cela devient un peu technique et il faut connaitr ePHPMyAdmin et la notion d'index et de clé unique en MySQL.Peut être contacter Pascal de NetEnvie qui comme indiqué plus haut à une approche plus manuelle mais aussi plus rigureuse et qui pourra peut être vous assister.Crdlt Franck

Christele


18/05/2016 18:47:07

Bonjour,j'ai suivi ce pas à pas pour une mise à jour, en local avec Wamp, de ma boutique déjà en 1.6. mais qui fonctionnait mal (mise à jour depuis 1.4). J'ai voulu repartir sur du "propre" mais arriver à l'étape, importation de l'ancienne BDD, j'ai ce message d'erreur qui me bloque :ErreurRequête SQL :INSERT INTO `ps_access` (`id_profile`, `id_tab`, `view`, `add`, `edit`, `delete`) VALUES (1, 1, 1, 1, 1, 1), (1, 2, 1, 1, 1, 1), (1, 3, 1, 1, 1, 1), (1, 4, 1, 1, 1, 1), (1, 5, 1, 1, 1, 1), (1, 6, 1, 1, 1, 1), (1, 7, 1, 1, 1, 1), (1, 8, 1, 1, 1, 1), (1, 9, 1, 1, 1, 1), (1, 10, 1, 1, 1, 1), (1, 11, 1, 1, 1, 1), (1, 12, 1, 1, 1, 1), (1, 13, 1, 1, 1, 1), (1, 14, 1, 1, 1, 1), (1, 15, 1, 1, 1, 1), (1, 16, 1, 1, 1, 1), (1, 17, 1, 1, 1, 1), (1, 18, 1, 1, 1, 1), (1, 19, 1, 1, 1, 1), (1, 20, 1, 1, 1, 1), (1, 21, 1, 1, 1, 1), (1, 22, 1, 1, 1, 1), (1, 24, 1, 1, 1, 1), (1, 26, 1, 1, 1, 1), (1, 27, 1, 1, 1, 1), (1, 28, 1, 1, 1, 1), (1, 29, 1, 1, 1, 1), (1, 30, 1, 1, 1, 1), (1, 31, 1, 1, 1, 1), (1, 32, 1, 1, 1, 1), (1, 33, 1, 1, 1, 1), (1, 34, 1, 1, 1, 1), (1, 35, 1, 1, 1, 1), (1, 36, 1, 1, 1, 1), (1, 37, 1, 1, 1, 1), (1, 38, 1, 1, 1, 1), (1, 41, 1, 1, 1, 1), (1, 42, 1, 1, 1, 1), (1, 43, 1, 1, 1, 1), (1, 44, 1, 1, 1, 1), (1, 46, 1, 1, 1, 1), (1, 47, 1, 1, 1, 1), (1, 49, 1, 1, 1, 1), (1, 80, 1, 1, 1, [...]MySQL a répondu: Documentation #1062 - Duplicata du champ '1-1' pour la clef 'PRIMARY'Je cherche sur le web depuis un moment, mais je ne comprends pas l'erreur. Avez-vous une idée ?

Steve


26/04/2016 18:09:17

Bonjour Frank, merci pour ton tuto que j'ai utilisé il y a quelques temps avec succès. Cependant, je viens de le refaire et cela ne fonctionne plus :( J'ai toujours la même erreur qui est : Erreur d'analyse XML : données incompréhensibles après l'élément de document Emplacement : http://localhost/migration/install/upgrade/upgrade.php Numéro de ligne 2, Colonne 1 : J'ai essayé de trouver d'où cela pouvait venir sur le web mais aucune info si ce n'est ceci : error 33 : Impossible de lire le fichier contenant les mises à jour SQL Vérifiez que les fichiers contenant les mises à jour SQL sont bien dans le dossier /install/upgrade/sql et que ceux-ci ont les bons droits (lecture notamment). J'ai regardé mais je suis en local donc aucun problème de droits sur les fichiers. J'avoue que je ne comprends plus rien, aurais-tu une idée ? Merci d'avance.

Pascal - Netenvie.com


08/04/2016 08:44:32

Salut Franck. N'as tu rencontré aucun problème d'auto increment manquant sur certaines tables (ps_theme ou ps_tab par exemple) ? On rencontre souvent ce souci en migrant de 1.5 à 1.6 avec le script one click upgrapde. Du coup ensuite certaines installations posent souci car on se retrouve avec des Id à 0 ce qui donne une valeur vraie avec la fonction isempty ... donc une erreur Presta.

Franck - Sitolog


17/03/2016 14:54:10

Damien, Cela signifie dans votre cas que erreur 28 à une autre cause dans votre cas. Je partageais juste le fait d'avoir rencontré cette erreur et la cause dans mon cas. Voir par exemple le commentaire de Brice qui a aussi rencontré cette erreur qui peut manifestement avoir plusieurs causes.

David, Si à l'étape 7 le fichier n'existe pas, ce n'est pas grave, car on va de toutes façon le remplacer par celui de l'ancien site à l'étape 10 Et à l'étape 10, si le fichier n'existe pas, le créer tout simplement en faisant un copier-coller du fichier de l'ancien site.

Charlotte, donne nous le résultat de ton essai.

Pascal, je ne parle des redirections 301 pas en effet, mais voir mon autre article consacré à ce sujet.

Dernière étape de cete migration, je viens de passer tout le site en https (full SSL), avec activation du HSTS (certificat A+ gratuit chez Yoorshop). La aussi il y a beaucoup de choses à partager, je vais essayer de résumer cela dans un autre article. Franck

David


17/03/2016 12:23:46

Merci pour cette méthode, que j'essaye d'expérimenter. Mais je me heurte à une incohérence à l'étape 7 et 107/ Le fichier settings.inc.php n'existe pas dans le dossier /admin .10/ Et dans /config, il n'existe pas non plus puisque qu'on a pas encore lancé l'installation de prestashop 1.6.Ma question est donc : faut il lancer l'installation de prestashop 1.6 avant de faire votre manipulation avec la base ?Merci par avance DM

Charlotte


16/03/2016 16:34:26

C'est vraiment génial comme technique. C'est marrant car je ne l'ai lue nulle part ailleurs. Je viens d'essayer en local et ça a fonctionné sans problème. Au lieu de partir d'une version toute neuve de prestashop 1.6, peut-on partir d'une copie d'un site avec le thème déjà tout prêt et y ajouter le dossier install ? Je pense que je vais essayer.Bien cordialement, Charlotte

Brice


24/02/2016 15:11:17

pour l'erreur 28 de l'étape d'upgrade, il s'agirait plus de ça : https://www.prestashop.com/forums/topic/191184-mise-a-jour-manuelle-action-resultfail-error28/Merci pour ce tuto qui simplifie vraiment les étapes

Damien raynaud


19/02/2016 12:07:01

Bonjour Frank, Merci pour votre tuto, En suivant tout votre tuto, j'arrive "l'Erreur 28 : soucis avec la ligne" J'ai donc ouvert le fichier mais je ne vois pas la ligne dont vous parlez, alors je l'ai rajouté (faut-il faire çà ?) La seule différence est que j'ai mon nouveau presta dans un repertoire qui s'appel /Dev (et pas nouveau, donc j'ai adapté la sementique). et que j'ai crée spécialement une BDD rien que pour lui (en ayant importer l'ancienne bien-sure!).Mais cela ne semble pas fonctionnerAvez-vous un conseil s'il vous plait ? Je suis joignable sur ce mail : damien.raynaud@agsystem.fr

Pascal - Netenvie.com


10/11/2015 18:36:59

Merci pour ce retour d’expérience. Personnellement je préfère migrer sur nouveau serveur en notant les corrections à apporter sur la base. Cela permet d'y installer les nouveaux modules et de tout tester une fois la base misà jour tout en laissant l'ancien site en production. Une fois le nouveau site testé et finalisé on peut ainsi re-migrer la base de données au jour J en respectant cette procédure de correction. Le seul défaut est qu'il y a une transition au niveau des DNS puisqu'on change d'IP. Par contre on a le temps d'optimiser et de sécuriser le serveur. Enfin tu ne parle pas des redirections 301 qui me semblent essentielles si certaines URLs changent.

Vous devez être enregistré

Cliquez ici pour vous enregistrer

Ajouter un commentaire