Pour les propriétaires d'une boutique Prestashop, la mise à jour de version est toujours un sujet d'angoisse, de stress, de nœuds au ventre, et de nuits blanches. Je vous livre la méthode qui m'a permis de faire la mise à jour en quelques minutes.

Attention, elle a marché pour moi, et avec un hébergeur qui facilite le travail.
D'abord, les backups: des fichiers de la 1.6 + la base de données. On répète jamais assez.
Je décline toute responsabilité si vous n'arrivez pas à vos fins.

Histoire de l'Upgrade

J'ai d'abord tenté de suivre le déroulé de l'aide officielle de Prestashop, disponible sur le blog.

Pourquoi publier le tuto de mise à jour de 1.6 vers 1.7, sur le blog au lieu de la documentation officielle...?
La logique Prestashop restera toujours un grand mystère...

Bien évidemment, en suivant le pas-à-pas, je me retrouve avec un truc qui coince dans tous les sens:

  • accès Administrateur interdit
  • puis page blanche (fausse erreur 500)
  • puis....


Ce après avoir tenté toutes les méthodes et pistes diverses débusquées ici et là, sur le forum, et sur les pages de "spécialistes" Prestashop.

Galère or not galère ?

Au départ, j'avais pris l'option "Décompiler et envoyer par FTP", préconisée par la doc officielle.
Sauf que tout décompiler,  ben ça marche pas.
En plus de prendre des heeeeeuuures à envoyer toute la forêt amazonienne (*) des fichiers & dossiers de Prestashop, sur le serveur...

En fait, le truc est tout simple.
L'explication officielle porte à confusion.

Dézipper l'archive Prestashop 1.7, en fait, ça veut dire s'arrêter aux fichiers qui en sont extraits: index.php, Install_Prestashop.html... et le magnifique prestashop.zip contenant toute l'arborescence touffue du CMS.

Migrer Prestashop 1.6 vers 1.7 facilement

C'est là qu'il faut pas se faire avoir !
IL NE FAUT PAS DEZIPPER LA 2eme archive prestashop.zip

Voici comment procéder

1 >>
Bien sûr, avant tout, vous aurez gardé intact l'ancien dossier, celui qui contient les fichiers du Prestashop 1.6.
Perso, je renomme.
Et vous avez fait un backup de la Base de Données.
Hypeeeer important.
Voire 2 backups.
Chez un hébergeur comme O2Switch, en plus c'est fastoche.
Via l'outil "opération" de phpMyAdmin, on peut faire une copie de base de données sans se prendre le chou :-)

2 >>
Il faut envoyer les fameux 3 fichiers tels que, sur l'hébergement, dans un nouveau dossier tout neuf, qui va recevoir toute la nouvelle version de Prestashop 1.7.
Ceux-là, et rien d'autre:
Migrer Prestashop 1.6 vers 1.7 facilement


3 >>
Ensuite entrer le nom de domaine.
La procédure d'installation se lance.

Et c'est là qu'intervient la ruse de sioux !
Au moment où l'installeur demande de renseigner les infos cruciales pour poursuivre l'installation, ON ARRÊTE TOUT.

Surtout, NE PAS CONTINUER.
Laisser le navigateur là où il en est.

Normalement, il affiche l'url http://mondomaine.ext/install

4 >>
Retour à FTP.
On copie depuis le vieux dossier du Prestahop 1.6, les éléments suivants:
- dossier /img
- dossier /upload
- dossier /download
- fichier /config/settings.inc.php (important: c'est lui qui va aller connecter Prestahop 1.7 à la base de données de 1.6)

5 >>
Envoyer tout ça sur le NOUVEAU dossier, celui qui contient Prestashop 1.7
Confirmer "remplacer" les dossiers / fichiers existants.

6 >>
Quand c'est fait, on revient sur le navigateur.
Et on lance la procédure d'update en ajoutant /upgrade/upgrade.php à l'url restée en stand-by (point 3)

C'est-à-dire qu'on aura quelque chose du genre http://mondomaine.ext/install/upgrade/upgrade.php

7 >>
Il y a de fortes chances que la navigateur affiche un message "Erreur d'analyse XML: aucun élément trouvé"
Pas de panique.
Surtout n'essayez pas de chercher la solution à l'erreur.
Ignorez ce message.

Via ftp, renommer le dossier /install en /install-old

On peut renommer  directement le dossier admin du nom de l'ancienne version (type /admin4Xu56).
Ce qui permet de garder le lien sécurisé de l'administration comme avant.

Et là ça marche, impec.
Enfin, à quelques bugs près: voir en conclusion.

(*) Quand je pense qu'on reproche à Joomla d'avoir beaucoup de dossiers et de fichiers par rapport à un Wordpress...
Z'ont pas été voir les copains...


En conclusion

Durée de la manip: 10 minutes montre en main.
Sans compter les backups préalables of course.

Bon, y a bien quelques petites images qui se sont perdues en route.
Mais c'est un moindre mal...

Il faudra ensuite passer un peu de temps à reconfigurer la page accueil.
Parce que pour le coup, là, plus rien à voir avec votre site initial.
Et pour cause: bannières changées, nouveau template...
Les modules devront également être mis à jour. Si ça coince, désactivez-les avant, ou reconnectez-vous.
Pour Paypal, il faudra réinstaller le module.

Les bons points de la nouvelle version Prestashop 1.7

Ergonomie optimisée

Au passage, je tiens à dire que la nouvelle mouture du back-office est très nettement plus agréable.
Elle nécessite un peu d'adaptation (nouvelle interface).
Mais quand c'est fait, on apprécie la nouvelle ergonomie.
La bestiole se montre plus rapide également.

Filtre à Facettes au top

Le module Filtre à Facettes a été très optimisé: possible de paramétrer très finement les filtres (catégories, prix, caractéristiques, attributs) et d'en choisir l'apparence.
On peut même créer plusieurs modèles de filtres. Pratique sur une configuration Multi-boutiques.
Cerise sur le gâteau: le paramétrage est très facile.
Une exception quand il y a Prestashop dans la même phrase.

Personnalisation et tags SEO / SEM

Et la personnalisation de template est enfin possible !
Ajout des tags Google Analytics enfin possible aussi.
Presque sans galérer.

Les mauvais points d'une mise à jour vers Prestashop 1.7

Je passe sous silence certains modules qui ont bien sûr disparu.
Ceux qui ne sont pas natifs et avaient été installés en 1.6 n'ont pas suivi le déménagement.
Logique. Il faudra les réinstaller.
Ex: le module de paiement Paypal (celui de Paypal, le seul gratuit).

Là où ça se corse, c'est quand on se voit interdit d'accès en back-office, alors qu'on est superAdmin.
Disparition aussi du lien de menu "Multiboutique" dans le panneau "Paramètres avancés", juste après "Webservices".

J'ai cherché un moment. La soluce est aussi facile que le bug est tordu...
En fait, la base de données contient 2 tables:

  • prefix_authorization_role:
    Liste toutes les autorisations sur quoi dans l'interface.
    Le bug: certaines commandes sont manquantes.

    Exemple de ce qu'on y trouve


    Là, je peux pas vous aider: il semble que chaque site a ses propres manquants.

    Sur l'aide du forum qui m'a permis de trouver les miens, j'avais déjà certains de ceux que d'autres devaient rajouter.
    Par contre attention: chaque Presta a sa table personnalisée.
    Dans le screenshot, le ROLE_MOD_TAB_ADMINACCESS_CREATE a l'id_authorization_role n° 1
    Chez un autre, elle peut avoir le n° 10

    Donc, ne recopiez pas aveuglément ! Vérifiez déjà que vous avez ou pas la chaîne de caractère.
    S'il faut la rajouter, calez-vous sur le n° id existant de votre table (ex: 172), pour insérer la chaîne manquante avec le N° id suivant (ex: 173).

  • prefix_access:
    distribue les rôles pour chacune de ces autorisations; où le rôle  est celui de SuperAdministrateur
    Le bug: certaines commandes n'ont aucun rôle.

    Exemple: pour la commande id 13, qui correspond à l'autorisation ROLE_MOD_TAB_ADMINADMINPREFERENCES_UPDATE, il n'y a aucune ligne dans la table pref_access.
    Du coup, le SuperAdmin n'a droit à rien, pour cette commande

    Exemple de ce qu'on y trouve


    Là par contre, je peux vous aider.
    Il s'agit de repérer toutes les lignes manquantes de cette table.
    Ce qui correspond à "aucun droit" pour la commande d'autorisation correspondante.

    L'astuce du sioux (le retour):

    a / exporter toutes la table prefix_authorization_role au format excel

    b / ouvrez-la et triez-la par n°
    Pour travailler plus confortablement, faire un tri sur filtre textuel avec un mot-clé significatif
    Ex: PREFERENCE

    c / en parallèle, ouvrir la table prefix_access sur la base de données et triez-la avec la colonne id_authorization_role

    d/ repérez-y tous les n° ID du fichier excel qui ne figurent dans la base
    Sur excell, je les marque en rouge

    e/ quand tout ce petit monde est recensé, il n'y a plus qu'à insérer les lignes dans la table prefix_access en indiquant le n° id_authorization_role manquant, et en lui attribuant l'id_profile 1 (droits administrateurs)
    Attention, je vous conseille de limiter aux chaînes qui ont le mot _ADMIN

    Et voilààà, comment j'ai pu récupérer mes accès administrateurs, avec mon lien pour gérer le multi-boutique.

    Malheureusement, je suis pas à l'abris d'autres déconvenues.
    L'histoire le dira.
    Ma migration date de ce WE, à l'heure où j'écris.
    Sympa le WE... Merci Presta... :-(

    Pour info, les plantages après mise à jour de Joomla, en général, on trouve la solution en moins d'une journée...
    Et les restaurations sont d'une simplicité !