Plusieurs versions de PHP sous Linux

Une solution avec PHPBrew

Alexandre Tranchant

Votre code doit fonctionner sur plusieurs versions de PHP ? Vous migrez une application d’une ancienne vers une nouvelle version de PHP ? Vous développez des bibliothèques ? Alors, vous avez sûrement besoin de faire tourner plusieurs versions de PHP sur votre ordinateur de développement.

Le temps de déguster un bon café, cet article vous explique comment installer avec facilité plusieurs versions de PHP sous Linux et comment passer d’une version à l’autre à l’aide d’une seule commande.

Commentez

- Titre : Plusieurs versions de PHP sous Linux

- Auteur : Alexandre Tranchant

- Parution : 18 mai 2020

- Public visé :

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2020 Alexandre Tranchant. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. L’enfer des dépendances

- I-A. La roadmap de PHP

- I-B. Il était une fois…

- I-C. Une solution pour le développement

- II. Installation de PhpBrew

- II-A. Prérequis à l’installation

- II-B. Installation de PhpBrew

- III. Utilisation de PhpBrew

- III-A. Quelques commandes

- III-A-1. Mettre à jour la liste des versions connues

- III-A-2. Lister les versions de PHP connues

- III-A-3. Lister les variantes, les extensions disponibles

- III-A-4. Construire une nouvelle version de PHP

- III-A-5. Lister les versions de PHP installées

- III-A-6. Changer de version

- III-A-7. Exécuter une commande sur chaque version installée

- III-B. Quelques exemples d’utilisation de PhpBrew

- III-B-1. Démarrage, changement de version, arrêt

- III-B-2. Le piège des extensions supplémentaires

- IV. Création de votre environnement de développement

- IV-A. Installer toutes les versions de production et leur variante avec debug et XDebug

- IV-B. Utiliser composer avec PhpBrew

- IV-C. Configurer votre IDE : un exemple avec PhpStorm

- IV-C-1. Configuration de nos versions de PHP

- IV-C-2. Configuration de composer

- IV-C-3. Testons tout cela !

- IV-C-3-a. Testons composer

- IV-C-3-b. Créons deux scripts PHP pour tester deux interpréteurs PHP différents

- IV-C-3-c. Lançons simultanément trois serveurs PHP en différentes versions

- V. En conclusion

- V-A. Commandes utiles

- V-B. Liens utiles

I - L’enfer des dépendances

I-A - La roadmap de PHP

À l’heure où j’écris cet article, fin mai 2020, voici la roadmap de PHP :

Roadmap de PHP à la date de rédaction de cet article

(cliquez ici pour aggrandir l'image)

La version 8 étant attendue vers la fin de l’année, l’heure est plutôt calme, nous ne pouvons utiliser que trois versions de PHP :

- la version 7.2, même s’il n’existe plus que des mises à jour de sécurité, elle reste présente en production ;

- la version 7.3 ;

- la version 7.4.

Quand vous aurez bu votre café :

- vous disposerez de ces trois versions de PHP, chacune d’entre elles sera déployée avec deux variantes :

- une compilation avec les extensions par défaut,

- une seconde avec XDebug en plus des extensions par défaut ;

- grâce à home brew, l’outil composer se basera sur la version de phpbrew ;

- votre IDE sera correctement configuré pour chaque version de PHP.

La solution, c’est le logiciel PhpBrew qui va nous l’apporter. Les adeptes du ristretto peuvent passer au chapitre 2.

I-B - Il était une fois…

Il était une fois un client qui appelait pour nous faire part d’un bogue. La hotline a réussi à reproduire le code et nous informe qu’il ne survient que sur les environnements déployés avec PHP7.4.

Du coup, le service de test a reçu pour mission de développer un test fonctionnel mettant en évidence le bug. Un développeur s’y attelle, il fait craquer ses doigts et lance sa machine virtuelle avec PHP7.4. Le voilà à coder son test. Une demi-heure plus tard, c’est fait. Il lance la suite de tests, tout marche, sauf le nouveau test qui retourne un échec. Parfait ! Le développeur pousse son code sur le dépôt de développement et ô surprise, tout explose. Bon, j’exagère un peu. En fait, nos tests d’intégration exécutés par Travis-CI montrent que son test plante en PHP7.3 ! La hotline avait dit que cela fonctionnait en 7.3 ! Au pire, le test devrait indiquer un échec (failure), mais sûrement pas une erreur !

Mais que s’est-il donc passé ? Est-ce que la hotline se serait trompée ? Un test manuel aura vite démontré que nous avions tort de douter d’eux. Ça marche en PHP7.3. Alors comment cela se fait-il ?

En fait, le développeur a déployé l’application sous PHP 7.4, notre gestionnaire de dépendances, composer a sélectionné la dernière version de PHPUnit compatible, c’est-à-dire la 9. Ensuite, PHPStorm, son IDE, lui a suggéré la méthode « getMethod » pour un mock de son test. Résultat ? Le test est simplifié grâce à cette nouvelle méthode et, en plus, le test marchait. Du moins, en PHP7.4…

Mais PHPUnit9 n’est pas compatible avec PHP7.3 ! Résultat ? Dans un environnement en PHP7.3, composer ne déploie que la version 8 de PHPUnit, une version où la méthode « getMethod » n’existait pas encore. Le déploiement sur les serveurs de qualification n’a pas planté, mais le test si ! D’ailleurs, il ne retourne pas un échec, il provoque carrément une erreur. Comment notre développeur aurait-il pu éviter cela ? En redéployant son application sous PHP7.3 et avant d’exécuter son test sous PHP7.3, or il ne pouvait pas, car pour faire tourner PHP7.4, il utilisait une machine virtuelle. Tout aurait été plus simple pour lui, si nous avions documenté le passage d’une version de PHP à une autre sur les environnements de développement. Il n’aurait pas eu recours à l’artillerie lourde, à la machine virtuelle. C’est tout l’objet de ce tutoriel qui reprend une procédure interne pour installer et utiliser PhpBrew.

I-C - Une solution pour le développement

Notez bien que PhpBrew reste une solution pour un environnement de développement.

En production, les hébergeurs vont veiller à ce que le serveur web, Apache, Nginx, charge la bonne version du module PHP. En environnement, il existe trois méthodes générales.

Extensions : on peut utiliser des extensions différentes et affecter un module à une version spécifique. C’était le cas, il y a bientôt une vingtaine d’années, on affectait le module apache/php3 aux fichiers d’extensions php3 et le module apache/php4 aux fichiers d’extension php. Cette méthode désuète n’a heureusement plus cours aujourd’hui.

Variables d’environnement : certains hébergeurs utilisent Cpanel ou une solution maison pour que le serveur charge telle ou telle version du module PHP en fonction d’un paramétrage de leur client. Ce genre de solution leur permet d’offrir du PHP7.2 à certains clients quand d’autres préféreront la version 7.4.

VirtualHost : enfin, via l’hôte virtuel, un administrateur peut définir une certaine version du module PHP pour un site web et une autre version pour un autre site web. Cette solution est particulièrement mise en œuvre sur les serveurs dédiés à l’Intranet d’une entreprise. Par exemple, sur le même serveur Apache, on fait tourner l’application RH avec le module Apache-PHP7.2 et l’application Mantis en Apache-PHP7.4.

Je vois encore quelques développeurs se creuser la tête pour configurer un serveur Apache sur leur environnement de développement. N’oubliez pas c’est désormais inutile. Depuis la version 5.4, PHP intègre un serveur intégré. Si ce serveur ne peut être utilisé en production, il est parfait pour le développement.

Lancer le serveur web intégré à PHP

php -S localhost:8000

II - Installation de PhpBrew

II-A - Prérequis à l’installation

L’installation de PhpBrew est relativement facile, même s’il n’existe pas encore de paquets sous Linux. Voici les prérequis :

- PHP5.3+ (pour la version minimale, évidemment, si vous avez PHP7, ça va très bien) ;

- bz2 (pour décompresser les phar) ;

- curl (pour télécharger les paquets) ;

- gcc, binutils, autoconf, libxml, zlib, readline (pour compiler).

Le plus complexe est d’installer les prérequis, alors pour vous simplifier la tâche, voici les paquets indispensables, distribution par distribution.

Installations des paquets nécessaires sous Ubuntu

apt-get install build-essential libbz2-dev libreadline-dev libsqlite3-dev libssl-dev libxml2-dev libxslt-dev php-cli php-bz2 pkg-config

Installation des paquets nécessaires sous Debian

apt install php7.3 php7.3-common php7.3-cli php7.3-fpm build-essential autoconf automake autotools-dev re2c libxml2 libxml2-dev libssl-dev openssl gettext libicu-dev libmcrypt-dev libmcrypt4 \
libmhash-dev libmhash2 libfreetype6 libfreetype6-dev libgd-dev libgd3 libpng-dev libpng16-16 libjpeg-dev libxpm4 libltdl7 libltdl-dev libreadline-dev php7.3-bz2 libbz2-dev libcurl4-gnutls-dev libzip-dev

Installation des paquets nécessaires sous Fedora/CentOs

yum install make gcc gcc-c++ kernel-devel
yum install php php-bz2 php-devel php-pear bzip2-devel yum-utils libmcrypt-devel libpqxx-devel libxslt-devel pcre-devel libcurl-devel libgsasl-devel openldap-devel
yum-builddep php
yum install httpd-devel

Installation des paquets nécessaires sous OpenSuse

sudo zypper in php7 php7-bz2 php7-phar php7-curl php7-openssl
sudo zypper in -t pattern devel_basis
sudo zypper in libxml2-devel libopenssl-devel libbz2-devel libmcrypt-devel libxslt-devel

Avec le temps, cette liste de prérequis pourrait évoluer. Voici la liste des prérequis maintenue à jour par l’équipe de PhpBrew.

II-B - Installation de PhpBrew

Pour l’installation, vous ne devrez poser votre tasse que quelques instants pour saisir les quelques lignes de commandes :

- Ligne 1 : elle télécharge le script ;

- Ligne 2 : elle le rend exécutable ;

- Ligne 3 : elle le déplace vers le répertoire adéquat pour l’appeler depuis n’importe quel répertoire.

Installation de PhpBrew

1. curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew

2. chmod +x phpbrew

3. sudo mv phpbrew /usr/local/bin/phpbrew

4. phpbrew init

Néanmoins, je vous déconseille de suivre aveuglément la documentation officielle pour l’étape suivante si vous ne voulez pas casser l’apparence de votre terminal.

Configuration du terminal selon la documentation

echo "[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc" >> ~/.bashrc
source ~/.phpbrew/bashrc

PhpBrew a tendance à modifier l’apparence de votre terminal pour afficher la version de PHP en cours. L’illustration suivante montre la différence !

Changement de l’apparence du terminal

J’ai fait l’appel au fichier de configuration de PhpBrew au début de mon fichier de configuration bash pour charger les variables d’environnement. Comme je n’ai pas besoin de savoir tout le temps quelle est la version actuelle de PHP, la suite de mon script écrase les modifications faites pour la présentation. À vous de choisir ce que vous préférez !

III - Utilisation de PhpBrew

III-A - Quelques commandes

Voilà PhpBrew est installé, vous allez désormais découvrir qu’il est très simple de compiler une version précise de PHP, de lister les versions disponibles et leurs variantes et, l’essentiel, de basculer d’une version à l’autre.

III-A-1 - Mettre à jour la liste des versions connues

Pour éviter de constamment interroger les serveurs de PHP.net, PhpBrew met en cache les versions de PHP qu’il sait disponibles. Pour mettre à jour ce cache, il suffit d’exécuter la commande suivante. Vous ne devriez utiliser cette commande que lorsqu’une nouvelle version de PHP est publiée.

PhpBrew met à jour la liste des versions de PHP existantes, information obtenue depuis les dépôts officiels de PHP

phpbrew update

Mise à jour des versions de PHP connues

III-A-2 - Lister les versions de PHP connues

L’argument « known » permet de lister les versions de PHP que connaît PhpBrew. Ce ne sont pas les versions installées, mais bien les versions de PHP connues. Je ne dis pas « existantes », car si vous n’avez pas mis à jour PhpBrew, il peut ne pas connaître les toutes dernières versions publiées.

Lister les versions connues de PHP

phpbrew known

Versions de PHP connues par PhpBrew

III-A-3 - Lister les variantes, les extensions disponibles

L’argument « variants » permet de lister les variantes, les extensions disponibles pour construire un nouveau « build » PHP.

Lister les variantes disponibles

phpbrew variants

Lister les variantes disponibles

En prime, cette commande vous liste à la fin quelques astuces pour créer un build avec quelques variantes. Nous reviendrons sur ce point un peu plus loin.

III-A-4 - Construire une nouvelle version de PHP

La commande « phpbrew install » vous permet d’installer une version de PHP. Sans autre argument que le numéro de version, Phpbrew compilera la nouvelle version avec les extensions par défaut, les extensions les plus courantes.

Exemple pour l’installation de PHP 7.4.6 avec les extensions par défaut

phpbrew install 7.4.6

Vous pouvez également spécifier les extensions que vous souhaitez et préciser un alias.

Exemple pour l’installation de PHP 7.3.18 avec l’extension debug

phpbrew install 7.3.18 +debug as php-7.3.18-debug

Les installations sont assez longues, car PhpBrew les compile complètement.

III-A-5 - Lister les versions de PHP installées

Avec l’argument « list », la commande phpbrew vous retourne les versions installées. En mode verbeux, avec l’option « -v », cette commande vous liste aussi les extensions installées sur chaque version.

Lister les versions installées

phpbrew list
phpbrew list -v

Liste des versions installées avec leurs extensions respectives

III-A-6 - Changer de version

L’argument « switch » permet de basculer d’une version de PHP à une autre

Basculer d’une version de PHP à une autre

phpbrew switch version
phpbrew switch php-7.4.6

Il suffit de remplacer version, par l’un des résultats de la commande « phpbrew list ».

III-A-7 - Exécuter une commande sur chaque version installée

La commande « phpbrew each » permet d’exécuter une commande sur chacune des versions installées. Nous verrons un usage pertinent à la fin du tutoriel. Pour le moment, contentons-nous d’un exemple très simple, mais peu utile :

Vérifier la version de PHP avec « each »

phpbrew each php -v

III-B - Quelques exemples d’utilisation de PhpBrew

III-B-1 - Démarrage, changement de version, arrêt

Pour vérifier la version de PHP en cours, nous allons utiliser la commande « php -v ». Ainsi, nous pouvons constater que :

- Ligne 1 : j’utilise l’exécutable PHP standard de ma distribution Debbie (Linux Mint LMDE basée sur une Debian Buster) ;

- Ligne 2 : je choisis une version précédemment installée : la 7.4.6 ;

- Ligne 4 : je choisis cette version 7.3.18 avec l’extension debug ;

- Ligne 6 : en arrêtant phpbrew, je reviens à la version de PHP fournie par ma distribution.

Démarrer PhpBrew et changer de version, puis l’arrêter

1. php -v

2. phpbrew switch php-7.4.6

3. php -v

4. phpbrew switch php-7.3.18-debug

5. php -v

6. phpbrew off

7. php -v

Les versions de PHP changent bien à chaque appel de PhpBrew

III-B-2 - Le piège des extensions supplémentaires

Parfois, les développeurs ont besoin d’une extension en particulier en plus des versions par défaut, alors ils exécutent la commande ci-dessous :

Exemple d’une mauvaise installation d’extension

phpbrew install 7.3.18 +debug as 7.3.18-debug

La capture d’écran vous démontre que cette commande ne rajoute pas l’extension debug. Enfin, pas tout à fait ! En réalité, elle remplace toutes les extensions par défaut par l’extension debug ! En d’autres termes, cette version de PHP n’a plus les extensions par défaut, elle ne dispose que d’une seule extension : debug. Très limitatif !

Seule l’extension debug est présente

Pour résoudre ce problème, vous avez deux solutions. La plus simple consiste à construire un build en précisant que vous voulez les extensions par défaut « +default » et l’extension debug « +debug ».

Création d’un build avec les extensions par défaut et l’extension debug

phpbrew install 7.4.6 +default +debug as php-7.4.6-debug
phpbrew list -v

Autre solution, les héritages ! Commençons par installer la version 7.3.18 avec les extensions par défaut. Puis installons une version qui hérite de la version par défaut, mais à laquelle on ajoute « debug ».

Construction d’un build qui hérite d’un autre build

phpbrew install 7.3.18 as php-7.3.18-default
phpbrew install 7.3.18 like php-7.3.18-default as php-7.3.18-debug +debug
phpbrew list -v

IV - Création de votre environnement de développement

IV-A - Installer toutes les versions de production et leur variante avec debug et XDebug

Pour ceux qui ont encore un peu de café à siroter dans leur tasse, nous allons installer les trois versions en cours de PHP ainsi que leurs trois variantes avec debug et surtout l’extension Zend XDebug, soit six installations en quelques lignes de commande.

Tout d’abord, on liste les dernières versions disponibles.

Versions disponibles

Nous allons nous limiter aux versions qui peuvent encore se trouver en production. Nous n’installerons donc pas les versions obsolètes de PHP. Seules restent les versions 7.2.31, 7.3.18 et 7.4.6 à installer, du moins au moment où je rédige cet article (mai 2020).

Grâce à PhpBrew, il est désormais facile de déployer ces trois versions, avec pour chacune deux variantes :

- les extensions par défaut seulement ;

- les extensions par défaut et l’extension debug.

Installations des versions de production et de qualification

phpbrew install 7.2.31 as php-7.2.31-default
phpbrew install 7.2.31 like php-7.2.31-default +debug as php-7.2.31-debug
phpbrew install 7.3.18 as php-7.3.18-default
phpbrew install 7.3.18 like php-7.3.18-default +debug as php-7.3.18-debug
phpbrew install 7.4.6 as php-7.4.6-default
phpbrew install 7.4.6 like php-7.4.6-default +debug as php-7.4.6-debug
phpbrew list -v

Et voilà, avec un seul copier-coller et quelques minutes de compilation, votre environnement de développement dispose de toutes les versions qu’on peut trouver en production (default) ou en environnement de qualification (debug) !

Nos trois versions avec deux variantes chacune

Attention, à ce stade vous avez installé l’extension debug, ne confondez pas avec l’extension XDebug.

Nous allons désormais installer pour chaque version *debug, l’extension XDebug de Zend. Pour ce faire nous allons :

- Ligne 1 : basculer sur une version debug ;

- Ligne 2 : vérifier que XDebug n’est pas installé ;

- Ligne 3 : installer l’extension Xdebug ;

- Ligne 4 : vérifier que XDebug est installé ;

- Lignes suivantes : on répète ensuite le processus pour les versions 7.3.12-debug et 7.4.6-debug en vérifiant à chaque fois le résultat.

Installation de XDebug sur la version 7.2.31-debug

1. phpbrew switch php-7.2.31-debug

2. php -v

3. phpbrew ext install xdebug stable

4. php -v

5. phpbrew switch php-7.3.12-debug

6. php -v

7. phpbrew ext install xdebug stable

8. php -v

9. phpbrew switch php-7.4.6-debug

10. php -v

11. phpbrew ext install xdebug stable

12. php -v

Installation de XDebug pour php-7.3.12-debug

IV-B - Utiliser composer avec PhpBrew

Composer est un excellent gestionnaire de dépendances pour PHP. Si vous ne l’utilisez pas, vous pouvez passer ce chapitre. Sinon la commande suivante va vous montrer que l’installation par défaut de composer n’utilise pas la version de PHP activée par PhpBrew, mais celle de votre distribution.

Diagnostic de composer

composer diagnose

Comme vous le voyez dans le résultat, le chemin utilisé pour appeler PHP est celui par défaut.

La commande suivante est plus précise :

Chemin par défaut et version de PHP utilisés par composer

composer diagnose | grep PHP

Diagnostic de composer

Il existait une commande permettant d’installer directement composer via PhpBrew, mais elle a été retirée de l’application. Désormais, il est nécessaire de passer par Brew. Commencez par installer le paquet brew en fonction de votre distribution.

Sous Debian, Ubuntu et Mint, il s’agit de la commande suivante. Pour les autres distributions, veuillez vous reporter à la documentation d’installation officielle.

Installation de homebrew

sudo apt install linuxbrew-wrapper

Pensez à bien rajouter le répertoire « /home/linuxbrew/.linuxbrew/bin/ » à votre PATH comme indiqué à la fin des commentaires qui apparaissent à l’écran à la fin de l’installation de brew.

Installez ensuite composer via brew :

Installation de composer via brew

brew install composer

Pensez à supprimer la version de composer de votre distribution et à redémarrer votre terminal pour être certain que votre PATH se met bien à jour.

Nous allons désormais basculer sur une version de PHP avec PhpBrew et vérifier que composer la prend bien en compte.

Vérification de l’association entre PhpBrew et Composer

1. phpbrew switch php-7.4.6-debug

2. php -v

3. composer diagnose | grep PHP

Composer est bien couplé avec PhpBrew

# Et voici une petite astuce pour vérifier que composer fonctionne bien avec toutes nos versions de PHP

phpbrew each composer | grep PHP

IV-C - Configurer votre IDE : un exemple avec PhpStorm

Dans ce paragraphe, nous allons nous pencher sur votre IDE et découvrir comment :

- configurer chacune de nos versions de PHP comme interpréteur ;

- déclarer le chemin de composer ;

- créer un processus pour démarrer un serveur PHP et vérifier via votre navigateur le résultat de la fonction phpversion().

IV-C-1 - Configuration de nos versions de PHP

1. Ouvrez la fenêtre des paramétrages (CTRL+ALT+S) ou sélectionnez « Files » puis « Settings » dans le menu principal.

2. Allez dans la rubrique « Languages & Frameworks / PHP » comme dans la capture d’écran ci-dessous.

Fenêtre de paramétrage des interpréteurs PHP

3. Dans la liste déroulante « PHP Language Level », sélectionnez « 7.4 ».

Fenêtre de paramétrage des clients PHP

4. Pressez « MAJ+Entrée » ou cliquez sur le bouton « … » à droite de « Client Interpreter ».

5. La fenêtre nommée « CLI Interpreters » s’ouvre,

6. Cliquez sur le « + » et sélectionnez « Other locals ».

Sélectionnez « Other locals »

7. Nommez-la avec un nom évocateur, par exemple « PHP 7.4.6 avec XDebug ».

8. Dans la rubrique « PHP Executable », allez rechercher la compilation de PHP correspondante. Pour moi, il s’agit de : /home/alexandre/.phpbrew/php/php-7.4.6-debug/bin/php.

9. PHPStorm va détecter la version de PHP et son fichier de configuration correspondant, vous remarquerez dans la capture d’écran ci-dessous qu’il a bien détecté l’extension XDebug.

10. Cliquez sur « Apply » et répétez les opérations 7 à 10 pour chacune des six versions.

L’illustration suivante vous présente ce que vous devriez obtenir à cette étape :

Configuration finale des six clients PHP

IV-C-2 - Configuration de composer

1. Ouvrez la fenêtre des paramétrages (CTRL+ALT+S) ou sélectionnez « Files » puis « Settings » dans le menu principal.

2. Allez dans la rubrique « Languages & Frameworks / PHP / Composer ».

3. Cochez la case « composer.phar ».

4. Cochez la case « Download composer.phar from getcomposer.org ».

5. Sélectionnez « Default project Interpreter » comme interpréteur PHP.

6. Cliquez sur « OK ».

Configuration de composer

Astuce : pour éviter que PhpStorm n’indexe le contenu de composer.phar, dans la liste des fichiers, faites un clic droit dessus et sélectionnez « exclude phar from project ».

IV-C-3 - Testons tout cela !

IV-C-3-a - Testons composer

Testons « composer » : via le menu principal, sélectionnez « Tools / Composer / Diagnose » et vérifiez dans le journal composer qu’il affiche la bonne version de composer, la bonne version de PHP et vérifiez son chemin.

Journal de composer dans PHPStorm

À la rédaction de ce document, PhpStorm télécharge par erreur la version 2 de composer. Or cette version est encore en phase de développement. Cela va poser pas mal de soucis.

Pour corriger cela, sélectionnez dans le menu principal « Tools / Composer / Self-Update ». En se mettant à jour, Composer revient à une version stable.

IV-C-3-b - Créons deux scripts PHP pour tester deux interpréteurs PHP différents

Créons un nouveau projet et créons un fichier « version.php » dont le contenu se contentera d’afficher le numéro de version de PHP.

Fichier version.php

<?php

echo phpversion();

Ensuite, sélectionnez dans le menu « Run / Edit configurations », nous créons deux « PHP Scripts » qui exécutent le fichier version.php.

La seule différence entre ces deux configurations, c’est le choix de l’interpréteur PHP.

Les deux configurations d’exécution de version.php

Si vous lancez les deux scripts (ALT+MAJ+F10) ou « Run / Run… », vous verrez que les résultats sont différents, comme attendus.

Résultat du script Version avec PHP 7.3

Résultat du script Version avec PHP 7.4

IV-C-3-c - Lançons simultanément trois serveurs PHP en différentes versions

1. Sélectionnez dans le menu « Run / Edit configurations ».

2. Créez un « Shell Script ».

3. Renseignez les valeurs suivantes :

1. Name : « Server PHP 7.4 port 8004 » ;

2. Script Path : /home/alexandre/.phpbrew/php/php-7.4.6-default/bin/php ;

3. Script Options : -S 127.0.0.1:8004 ;

4. Working directory : le répertoire de votre projet ;

5. Interpreter Path : laissez ce champ vide !

4. Recommencez les étapes précédentes pour une version 7.2 sur le port 8002 et une version 7.3 sur le port 8003.

Configuration du Shell Script avec PHP7.4

Vous pouvez exécuter les trois scripts les uns après les autres depuis la liste déroulante des scripts.

Sélectionnez le script puis cliquez sur « Play »

Si vous ouvrez votre navigateur sur les trois adresses suivantes, vous verrez que PHP exécute bien votre script sur des serveurs PHP de trois versions différentes.

À chaque port correspond une version différente de PHP

V - En conclusion

Le temps d’un café (ou deux), ce tutoriel vous a permis :

- d’installer plusieurs versions de PHP sous Linux ;

- de basculer d’une version à l’autre à l’aide d’une seule commande ;

- de lier composer à la version de PHP active ;

- de découvrir comment utiliser ces versions dans votre éditeur, ici PhpStorm.

J’espère que cet article vous facilitera la tâche. N’hésitez pas à me faire part de vos remarques.

En complément, vous trouverez ci-dessous les commandes les plus utiles et les sites web des outils cités dans cet article.

V-A - Commandes utiles

Rappels des commandes utiles

# Installer une nouvelle version de PHP avec les extensions les plus utiles
phpbrew install 7.4.6 +default +iconv +gettext +intl as php-7.4.6-defaut

# Lister les versions disponibles
phpbrew list

# Lister les versions disponibles et les extensions présentes
phpbrew list -v

# Changer de version
phpbrew switch php-7.4.6-default

#Vérifier que composer est bien interfacé avec phpbrew
phpbrew each composer diagnose | grep PHP

V-B - Liens utiles

- Dépôt Github de PhpBrew

- Roadmap de PHP

- Le serveur web intégré de PHP

- Site officiel de composer

- Site officiel de LinuxBrew

- Site officiel de JetBrains développant PhpStorm

- Licence MIT de PhpBrew

Je tiens à remercier ClaudeLELOUP pour sa relecture orthographique attentive.

Retour à l'article