Comment personnaliser la version PHP par répertoire chez o2switch

Forcez la version PHP que vous voulez dans un répertoire chez o2switch

Actuellement, j'utilise l'hébergeur o2switch pour mes tests de versions de PrestaShop ou d'autres CMS, hébergeur que je vous conseille dans mon article sur les meilleurs hébergeurs mutualisés pour PrestaShop ou thirty bees.

Cet hébergeur permet d'utiliser plusieurs environnements séparés avec son option de LUNE, mais dans mon cas, je dois pouvoir personnaliser la version de PHP utilisée par sous répertoires puisque j'ai un répertoire par version de PrestaShop et vous le savez tous, les versions PHP supportées par PrestaShop sont assez flexibles.

Les versions PHP compatibles avec PrestaShop

Pour réussir à faire cela, en premier lieu, il faut se référer à la très bonne documentation proposée par o2switch.

Je vais donc reprendre une partie de celle-ci pour vous expliquer simplement comment j'ai mis en place cela sur mon serveur.

Création du fichier php.ini

Cette partie-là est assez simple, il suffit de créer un fichier php.ini sur votre serveur web.

Ce fichier peut être enregistré dans n'importe quel répertoire de votre serveur puisqu'on définira l'adresse serveur précise lorsque l'on voudra l'utiliser.

Par exemple, sur votre hébergement o2switch, vous pouvez l'enregistrer à la racine de celui-ci, avant de rentrer dans le répertoire public_html, comme cela il est extérieur à la zone web pouvant être affiché et donc cela permet d'en sécuriser le contenu.

Cela vous donnera un truc du style : /home/votre_login/php.ini

Dans ce fichier, vous allez configurer les extensions et les éléments que vous souhaitez activer.

Comme l'exemple fourni par o2switch :

date.timezone=Europe/Paris
extension=mysql.so
extension=json.so
extension=nd_mysqli.so
extension=intl.so
extension=mcrypt.so
extension=gd.so
extension=xml.so
extension=xmlreader.so
extension=xmlrpc.so
extension=xmlwriter.so
extension=soap.so
extension=tidy.so
extension=bcmath.so
extension=dom.so
extension=fileinfo.so
extension=imap.so
extension=zip.so
extension=mcrypt.so
extension=memcache.so
extension=memcached.so
extension=intl.so
extension=pdo.so
extension=fileinfo.so
extension=mbstring.so
extension=ioncube.so
extension=imagick.so
extension=pdo_mysql.so
extension=mysqli.so

Personnellement, j'ai légèrement modifié son contenu, ce qui vous montre ce que l'on peut faire avec :

memory_limit=256M
max_execution_time=120
date.timezone=Europe/Paris
extension=mysql.so
extension=json.so
extension=nd_mysqli.so
extension=intl.so
extension=mcrypt.so
extension=gd.so
extension=xml.so
extension=xmlreader.so
extension=xmlrpc.so
extension=xmlwriter.so
extension=soap.so
extension=tidy.so
extension=bcmath.so
extension=dom.so
extension=fileinfo.so
extension=imap.so
extension=zip.so
extension=mcrypt.so
extension=memcache.so
extension=memcached.so
extension=intl.so
extension=pdo.so
extension=fileinfo.so
extension=mbstring.so
extension=ioncube.so
extension=imagick.so
extension=pdo_mysql.so
extension=mysqli.so
extension=opcache.so

Forçons la version PHP pour n'importe quel répertoire

À partir du moment où votre fichier php.ini est en place sur votre serveur, il vous suffit d'adapter le fichier .htaccess d'un répertoire pour qu'il utilise une version spécifique de PHP et que cette configuration soit appliquée à tous les sous-répertoires sauf si une nouvelle configuration définie dans un autre fichier .htaccess vient changer ce choix.

La liste des versions de PHP disponible sur votre hébergeur est bien entendu en constante évolution et je vous conseillerai de vous référer à la liste présente dans le menu cPanel :  Sélectionner une version de PHP

Choisir PHP 5.6

Ouvrons, dans notre cas pour PrestaShop ou thirty bees, le fichier .htaccess déjà présent à la racine du répertoire d'installation de notre boutique.

Tout en haut du fichier, avant la ligne

# ~~start~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again

Mettez les informations suivantes :

#PHP 5.6 :
<FilesMatch \.php$>
SetHandler application/x-httpd-php56
</FilesMatch>
AddHandler application/x-httpd-php56 .php
suPHP_ConfigPath /home/votre_login/php.ini

Bien entendu, personnalisez la ligne suPHP_ConfigPath /home/votre_login/php.ini avec l'adresse serveur de votre fichier php.ini créé précédemment.

Choisir PHP 7.3

Vous allez utiliser le même fichier php.ini ou vous pouvez en créer un nouveau dans un autre répertoire en pensant à changer son adresse serveur lors de la mise ne place dans le fichier .htaccess.

Il vous suffit donc de faire la même chose que pour la version de PHP 5.6 ci-dessus, mais en appelant la version 7.3 comme ceci :

#PHP 7.3 :
<FilesMatch \.php$>
SetHandler application/x-httpd-php73
</FilesMatch>
AddHandler application/x-httpd-php73 .php
suPHP_ConfigPath /home/votre_login/php.ini

Conclusion

Vous avez compris le principe, je ne vais pas énumérer toutes les possibilités de versions disponibles chez o2switch à ce jour.

J'espère que cette astuce sera utile pour vos développements, comme la mise à jour de vos versions PrestaShop sur un seul serveur en utilisant plusieurs versions de PHP.