I. Comment se passer de l’artillerie lourde ?▲
Dans mon entourage, j’observe de nombreux développeurs installer des suites logicielles telles que WAMPWindows Apache MySql PHP. Elles incluent :
- un serveur web, souvent Apache ;
- un serveur de base de données, malheureusement le choix se porte sur MySql ;
- l’interpréteur PHP avec plusieurs versions.
Certaines suites sont très bien faites. Néanmoins, pour du développement, il est souvent inutile d’installer Apache ou Nginx. Depuis la version 5.4, PHP intègre un serveur intégréDocumentation officielle sur le serveur intégré à PHP. Si ce serveur ne peut être utilisé en production, il répond aux besoins des développeurs.
Quant à la base de données, nos données en développement n’ont guère d’enjeu. Nous pouvons donc nous contenter d’utiliser des images docker. À défaut, on peut toujours installer le moteur de notre choix, mais, quoi qu’il en soit, je n’installe pas MySql, car je tiens à prémunir mes clients de ses dangersLes dangers de MySql et de MariaDb. Certes, la plupart des hébergeurs offrent des solutions clés en main avec ce moteur. La recherche d’une solution d’hébergement sera plus difficile, mais l’intégrité des données des clients mérite cet effort.
Pour ces deux raisons, nous n’allons pas installer la suite logicielle WAMPWindows Apache MySql PHP. Néanmoins, il est important qu’un développeur ne perde pas de temps pour basculer d’une version de PHP à l’autre. Cet article va nous apporter une solution.
II. Installations de PHP▲
Nous allons commencer par installer plusieurs versions de PHP : celles qui peuvent être présentes en production. À l’écriture de cet article, nous sommes en juin 2020. La version 8 n’est attendue que pour la fin de l’année. Les versions 7.1 et précédentes ne sont plus mises à jour. Nous allons donc installer trois versions de PHP restantes :
- 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.
Veuillez télécharger chacune des versions de PHP à déployer depuis la page dédiéePage de téléchargement de PHP pour Windows et les décompresser dans le répertoire de votre choix. Pour ce tutoriel, toutes les versions seront installées dans le répertoire suivant : « D:/opt/php ».
Ensuite, rendez-vous dans chacun des répertoires d’installation pour tester chaque version.
Avec cette capture d’écran, vous avez remarqué que je n’utilise pas le terminal habituel de Windows. J’utilise mderLovely console emulator package for Windows, ce terminal comprend de nombreuses commandes basiques Linux telles que ls et cat, mais il connaît aussi des plus complexes. Par exemple, which, history et surtout grep. Il implémente également git.
Je résume les cinq étapes de l’installation :
- créer un répertoire pour y centraliser toutes les versions de PHP ;
- télécharger l’archive de chaque version ;
- décompresser chaque version dans le répertoire de destination ;
- renommer chaque répertoire de façon simple ;
- dans chaque répertoire, renommer le fichier « php.ini-development » en « php.ini ».
Comme nous n’aurons besoin ni d’Apache ni de IIS, nous n’avons rien d’autre à faire.
III. Une solution avec Symfony▲
La solution, c’est Symfony qui va nous l’apporter. Nous n’allons bien sûr pas faire appel au framework de Symfony, seulement à l’utilitaire Symfony. Cet utilitaire est également appelé « client Symfony » parce qu’il permet de configurer le cloud Symfony. Ce client offre de nombreuses possibilités. Il est connu des développeurs Symfony pour ces fonctions principales :
- création d’un squelette d’application complète ;
- création d’un squelette d’application minimaliste ;
- configuration du cloud Symfony ;
- etc.
Cet utilitaire possède néanmoins beaucoup d’autres fonctions. Nous allons utiliser celle qui va nous permettre de basculer d’une version de PHP à une autre rapidement.
III-A. Installation de Symfony▲
Nous allons donc installer le client Symfony. Pour ce faire :
- téléchargez l’utilitaire SymfonyPage de téléchargement de l'utilitaire d'installation Symfony ;
- installez-le, en suivant la procédure pas à pas ;
- veuillez laisser cochée l’option qui vous propose d’ajouter le répertoire de Symfony au chemin du système (system path).
L’utilitaire de Symfony offre de nombreuses fonctions que vous pouvez découvrir en lançant l’aide :
symfony --help
Parmi cette liste de commandes, celle qui nous intéresse permet de lister les versions de PHP disponibles. Néanmoins, son retour ne va pas nous plaire dès le début :
symfony local:php:list
Cet appel va nous retourner un tableau de choix vide parce que Symfony liste les versions de PHP disponibles dans notre variable d’environnement « PATH ». Pour le moment, aucune version de PHP ne s’y trouve.
III-B. Configuration de l’environnement▲
Remédions à ce problème. Ouvrez le panneau de configuration des variables d’environnement. Les méthodes varient selon les versions de Windows. Pour ma part, je clique avec le bouton droit de la souris sur l’icône « Windows », généralement en bas, à gauche, puis je sélectionne Système. Ensuite dans la fenêtre système, je saisis « variables » et le menu me propose : « modifier les variables d’environnement système ».
Cliquez sur « Modifier les variables d’environnement. » La fenêtre des propriétés du système s’ouvre.
Cliquez alors sur le bouton : variables d’environnement. La fenêtre des variables d’environnement s’ouvre.
Dans la rubrique des variables du système, sélectionnez la ligne de la variable « PATH » avant de cliquer sur le bouton « Modifier ».
La fenêtre de modification de la variable d’environnement s’ouvre. Cliquez sur le bouton « Nouveau » pour ajouter une nouvelle ligne. Saisissez-y le chemin vers le répertoire où se trouve la version de PHP que vous souhaitez utiliser par défaut. Pour ma part, j’ai choisi la version 7.4. Ensuite, recommencez pour ajouter une nouvelle ligne avec la version 7.3, puis la version 7.2.
Finalement, vous devriez obtenir une liste de répertoires qui ressemble à quelque chose comme ceci :
Cliquez sur tous les boutons OK pour refermer la multitude de fenêtres que nous avons ouvertes. Cette étape est importante, toutes les fenêtres doivent être refermées pour que la nouvelle valeur de la variable d’environnement soit prise en compte. Veuillez également redémarrer votre console, que ce soit PowerShell, le terminal par défaut ou cmder, sans quoi elle ignorera la nouvelle valeur de la variable d’environnement.
Dans la console, la version par défaut de PHP est bien celle que nous avons choisie en premier :
php -v
Désormais, relançons la commande Symfony, elle devrait nous retourner un résultat plus intéressant :
symfony local:php:list
III-C. Changer de version de PHP pour le répertoire courant▲
Comme vous l’avez constaté, la version par défaut de PHP est la 7.4.4. Nous allons nous placer dans un répertoire temporaire et y créer un fichier nommé « .php-version » dont le contenu sera le numéro complet de la nouvelle version souhaitée : la 7.3.13, par exemple.
7.3.13
echo
7.3.13 >
.php-version
Les utilisateurs de Linux reconnaîtront le raccourci ci-dessus. Cette astuce vous permet de remplacer le contenu du fichier « .php-version ». Si le fichier n’existe pas, il est créé. Si vous n’utilisez pas cmder, vous devrez éditer le fichier avec l’éditeur de votre choix.
Alors, avons-nous changé de version ? Si nous lançons la commande habituelle, ce n’est pas encore le cas.
Au lieu de taper la commande habituelle pour connaître la version en cours de PHP, nous allons précéder cette commande par « symfony ».
symfony php -v
Et voilà ! Nous sommes en PHP 7.3.
En fait, Symfony recherche la présence du fichier « .php-version ». S’il existe, Symfony va lire son contenu et faire appel à la version correspondante de PHP. Désormais, chaque fois que nous appellerons l’exécutable « php », nous le ferons précéder par la commande « symfony ».
III-D. Quelques utilisations pratiques▲
Dans ce chapitre, nous allons voir combien cela est pratique avec trois exemples :
- le démarrage de trois serveurs web PHP, un pour chaque version ;
- l’utilisation de composer avec la version de PHP voulue ;
- la configuration de PHPStorm.
III-D-1. Démarrage d’un serveur web PHP▲
Nous allons appliquer ce que nous avons vu au chapitre précédent pour lancer un serveur web avec la version 7.2 de PHP. Pour ce faire :
- nous créons un fichier « phpinfo.php » qui fait appel à la fonction « phpinfo() » ;
- nous remplaçons le contenu du fichier « .php-version » par le numéro de notre version. Pour ma part, c’est 7.2.26 ;
- nous lançons le serveur intégré de PHP en préfixant la commande par « symfony » ;
- nous ouvrons notre navigateur à la page : http://127.0.0.1/phpinfo.php.
<?php
//fichier phpinfo.php
phpinfo();
Comme le serveur tourne, vous pouvez changer le contenu de votre fichier sans incidence sur le processus en cours. Si vous ouvrez une autre console, vous pouvez changer la version dans le fichier « .php-version » et lancer un autre serveur dans une autre version. Il vous suffit de penser à incrémenter le numéro du port et le tour est joué. Nous verrons plus loin comment Symfony peut là encore nous simplifier la tâche.
III-D-2. Utilisation avec composer▲
ComposerSite officiel de composer est un excellent gestionnaire de dépendances pour PHP. Si vous ne l’utilisez pas, vous pouvez passer ce chapitre. La fonction de diagnostic de composer va nous prouver qu’il exploite la version 7.4, car c’est le premier répertoire inscrit dans notre variable d’environnement « PATH ».
composer diagnose
Comme vous le voyez dans le résultat, le chemin utilisé pour appeler PHP est celui de la version 7.4.
Si nous exécutons la même commande depuis l’utilitaire Symfony, alors le client Symfony va lire le fichier « .php-version ». Il contient le numéro 7.2.26 depuis le chapitre précédent. Symfony va faire en sorte que composer utilise cette version-là, et non plus celle par défaut.
symfony composer diagnose
Symfony offre une autre opportunité. Les développeurs ayant développé des applications lourdes ont remarqué que composer utilisait beaucoup de mémoire pour résoudre les infernales règles de dépendances. En faisant passer composer par Symfony, le processus s’exécute dans un environnement :
- où la version de PHP est sélectionnée par Symfony ;
- où Symfony l’autorise à consommer toute la mémoire nécessaire pour rendre son résultat.
III-D-3. Configuration de PHPStorm▲
Dans ce chapitre, 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.
III-D-3-a. Configuration de nos versions de PHP▲
- Ouvrez la fenêtre des paramétrages (CTRL+ALT+S) ou sélectionnez « Files », puis « Settings » dans le menu principal.
- Allez dans la rubrique « Languages & Frameworks/PHP » comme dans la capture d’écran ci-dessous.
-
Dans la liste déroulante « PHP Language Level », sélectionnez « 7.4 ».
-
Pressez « MAJ+Entrée » ou cliquez sur le bouton « … » à droite de « Client Interpreter ».
-
La fenêtre nommée « CLI Interpreters » s’ouvre,
-
Cliquez sur le « + » , PHPStorm vous propose les trois versions de PHP présentes dans le « PATH ».
-
Sélectionnez le répertoire correspondant à la version 7.4.
-
PHPStorm complète tous les champs de la fenêtre, il vous suffit de cliquer sur OK.
- Répétez les opérations 7 et 8 pour chacune des trois versions.
L’illustration suivante vous présente ce que vous devriez obtenir à la fin de ces étapes :
III-D-3-b. Configuration de composer▲
- Ouvrez la fenêtre des paramétrages (CTRL+ALT+S) ou sélectionnez « Files » puis « Settings » dans le menu principal.
- Allez dans la rubrique « Languages & Frameworks/PHP/Composer ».
- Cochez la case « composer.phar ».
- Cochez la case « Download composer.phar from getcomposer.org ».
- Sélectionnez la version que vous souhaitez utiliser pour l’application dans la liste déroulante « PHP interpreter ».
En allant dans le menu « Tools/Composer/Diagnose », vous remarquerez dans le journal de Composer que la version de PHP utilisée est celle que vous avez sélectionnée.
III-E. Pour aller plus loin avec Symfony▲
Si vous l’ignoriez, désormais vous savez que Symfony n’est pas qu’un framework. C’est aussi un utilitaire. Nous avons découvert deux de ses utilités :
- sélectionner une version de PHP ;
- exécuter composer dans un environnement altéré pour forcer la version de PHP et lui allouer toute la mémoire nécessaire.
D’autres astuces se cachent dans cet outil :
- il vérifie votre configuration PHP : symfony local:check:requirement ;
- il vérifie la sécurité des bibliothèques que votre projet exploite : symfony local:check:security ;
- il vous permet de démarrer un serveur web : symfony local:server:start ;
-
de nombreuses méthodes vous permettent de manipuler ce serveur en :
- consultant son statut,
- l’arrêtant,
- modifiant la valeur de variable d’environnement ;
- ses autres fonctions sont propres au framework ou au cloud Symfony.
IV. Conclusions▲
Au terme de cet article, vous savez :
- installer plusieurs versions de PHP sous Windows ;
- choisir une version spécifique grâce à Symfony ;
- exécuter un script PHP ainsi qu’une commande composer depuis le client Symfony ;
- configurer PHPStorm avec différents interpréteurs PHP ;
- que l’utilitaire Symfony est plein de ressources complémentaires.
J’espère que cet article vous facilitera la tâche. N’hésitez pas à me faire part de vos remarques.
Je tiens à remercier Claude Leloup pour sa relecture orthographique attentive.