PrestaShop 1.6 sous PHP 7.2/3

Voici comment corriger la 1.6.1.24 pour PHP 7.2/3 hors modules. Ces corrections permettent de garder votre 1.6 un peu plus longtemps et d’étudier une refonte 1.7 sereinement.

Les manipulations sont techniques, NE PAS LES FAIRE DIRECTEMENT SUR VOTRE SITE EN PRODUCTION. Il faut créer une sauvegarde, une preprod etc...

En cas de doute, n'hésitez pas à vous faire accompagner. Nous pouvons vous proposer cet accompagnement : contactez-nous

Mettre à jour votre Prestashop

Si votre Prestashop 1.6 est inférieur à la version 1.6.1.24, il faut d'abord effectuer la mise à jour pour être sur la dernière version.

Si votre Prestashop n'a pas été modifié par des développements spécifiques, la mise à jour se passe bien dans la grande majorité des cas. Principalement, la seule correction à faire est d'ajouter dans le fichier contact-form.tpl de votre thème deux lignes.

Il faut les positionner au dessus de

<button type="submit" name="submitMessage" id="submitMessage" class="button btn btn-default button-medium">

Voici les deux lignes à ajouter:

<input type="text" name="url" value="" class="hidden" />
<input type="hidden" name="contactKey" value="{$contactKey}" />


La 1.6.1.25

Une préparation de la 1.6.1.25 a été faite par votre serviteur et est disponible sur https://github.com/PrestaShop/PrestaShop-1.6

Appliquer les corrections manuellement

La méthode décrite sera manuelle, elle consiste à appliquer les corrections des différents fichiers PHP.
Sur le git, il faut aller dans "Pull Request" puis dans "commits". Il y a à ce jour 6 commits.

Pour PHP 7.2

Appliquer les corrections des commits :

  • class corrections
  • controllers corrections
  • Smarty fixes
  • add class cookie
  • changes and corrections to the installation/update

Pour ce dernier commit tout n'a pas besoin d'être fait, le dossier "Install-dev" ne doit plus être sur votre site en production.

Il faut appliquer les corrections sur les fichiers :

  • admin-dev/themes/default/template/controllers/information/helpers/view/view.tpl
  • admin-dev/themes/default/template/controllers/modules/js.tpl
  • tools/profiling/Controller.php

Pour PHP 7.3

Appliquer le commit "UPDATE of TCPDF"

Le plus simple est de récupérer tout le dossier TCPDF et de le remplacer sur votre version. Le dossier TCPDF est dans /tools.
Voici un zip de ce dossier si vous ne savez pas comment l'extraire du GIT

Pour terminer

Une fois toutes ces corrections faites, il en reste une, certain hébergement PHP 7.3 peuvent de plus avoir "mcrypt".

Dans votre fichier config/settings.inc.php il faut ajouter deux lignes :

define('_OPENSSL_KEY_', 'nuXEj2Lx');
define('_OPENSSL_IV_', 'FBTe6B2Mgveku+hjfEKj+A==');

Pour la valeur de _OPENSSL_KEY_, vous pouvez reprendre la valeur qu'il y a dans
define('_COOKIE_IV_', 'nuXEj2Lx');

Pour l'autre valeur, ajouter un petit fichier PHP sur votre site qui contient ce code :

echo base64_encode(openssl_random_pseudo_bytes(openssl_cipher_iv_length('AES-128-CBC')));

Voici un exemple de fichier key_openssl.php
Exécuter le : https://www.votresite.com/key_openssl.php et récupérer le code délivré et mettez le pour _OPENSSL_IV_.

Conclusion

Voila votre PrestaShop de base est compatible PHP 7.2/3. Il reste les modules mais pour cela il n'y a pas de solution miracle, il faut être capable de corriger le PHP soit même.

N'hésitez pas à vous faire accompagner, contactez-nous

Posté dans PrestaShop le 05 mars 2020