Je reprends ici la documentation o2switch très claires et détaillée en allant à l'essentiel. Cette méthode est indiquée comme "non recommandée" dans la documentation car elle serait "moins performante", plus lente : c'est indétectable pour n'importe quel être humain !
Le principe de fonctionnement : indiquer d'utiliser dans un dossier une version de PHP différente de celle qui est définie dans l'interface de gestion, et qui par défaut est utilisé pour les applications.
J'explique comment faire chez o2switch, mais à priori cela est à même de fonctionner chez n'importe quel hébergeur.
En premier lieu cela consiste à créer un fichier php.ini. Dans l'exemple donné par o2switch il a le contenu suivant auquel j'ai ajouté les 4 premières lignes :
memory_limit=2048M
post_max_size=512M
upload_max_filesize=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
Il contient en fait les extensions que l'on souhaite activer.
Si une application a besoin d'une extension PHP particulière non listée, il suffit d'ajouter au fichier une ligne avec extension=son-nom.so : si cette extension existe bien pour cette version l'application fonctionnera.
Ce fichier php.ini peut être localisé n'importe où dans l'arborescence : tout ce qui est placé dans le dossier /public_html étant potentiellement accessible du web nous allons le placer en lieu plus sûr afin d'en sécuriser le contenu.
Je créé un dossier /php à la racine de mon hébergement et y dépose le fichier. On a un chemin qui doit ressembler à cela /home/mon_identifiant/php/php.ini.
Évidemment, si vous utilisez différentes versions de PHP vous pouvez sous /php ajouter des dossiers au nom de chaque version, 7.4, 7.0... chaque dossier comprenant son propre fichier php.ini, avec pour conséquence un chemin qui sera alors plutôt ainsi /home/mon_identifiant/php/7.4/php.ini.
Maintenant que cela est fait il est très simple d'indiquer à un dossier d'utiliser telle version de PHP.
ATTENTION le fichier .htaccess est critique et avant toute modification il est indispensable d'en faire une copie afin de pouvoir éventuellement le restaurer : on n'est jamais trop prudent.
Il suffit d'adapter le fichier .htaccess présent dans le dossier : s'il n'existe pas il faut le créer. Et au tout début du fichier placer les lignes suivantes pour utiliser par exemple PHP7.4 (à adapter suivant la version de PHP) :
#PHP 7.4 :
SetHandler application/x-httpd-php74
AddHandler application/x-httpd-php74 .php
suPHP_ConfigPath /home/mon_identifiant/7.4/php.ini
Attention toute particulière à la dernière ligne : le chemin d'accès doit obligatoirement être celui de votre fichier php.ini.
La seule contrainte à ce fonctionnement est d'utiliser une version de PHP proposée par votre hébergeur : il faut donc vérifier dans son outils de gestion ce qu'il propose. Chez o2switch cela se trouve dans le cPanel Sélectionner une version de PHP.