Installer plusieurs versions de PHP ou NodeJS sous Windows

En tant que développeur web, vous avez besoin de nombreux outils pour travailler sur vos projets, aussi bien pour le développement front-end (Less, Sass, Webpack, etc) que back-end (Composer, PHPUnit, PHPstan, etc).

Pour lancer ces outils, vous devez installer localement des applications comme PHP ou NodeJS dont les versions changent fréquemment.

Avec le temps, vous risquez d’être confronté à la mise à jour de ces applications. Malheureusement, vous ne pourrez pas mettre à jour l’ensemble de vos projets en même temps, il peut donc être utile de faire cohabiter plusieurs versions de PHP ou de NodeJS sur votre Windows.

Installer plusieurs versions de PHP

Commençons par installer PHP 7.2 et PHP 7.3 sur le même Windows . Pour cela, nous allons récupérer les binaires sur le site officiel et les placer dans le dossier de notre choix.

Nous allons ensuite extraire chaque archive dans un dossier différent

  • Créer un dossier C:\bin\php-7.2\ et y placer le contenu de l’archive PHP 7.2
  • Créer un dossier C:\bin\php-7.3\ et y placer le contenu de l’archive PHP 7.3

Vérifions l’installation de PHP 7.2 en exécutant le chemin complet dans notre terminal : C:\bin\php-7.2\php.exe -v

PHP 7.2.21 (cli) (built: Jul 30 2019 13:09:38) ( NTS MSVC15 (Visual C++ 2017) x64 )
 Copyright (c) 1997-2018 The PHP Group
 Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

Vérifions l’installation de PHP 7.3 en exécutant le chemin complet dans notre terminal : C:\bin\php-7.3\php.exe -v

PHP 7.3.8 (cli) (built: Jul 30 2019 12:44:08) ( NTS MSVC15 (Visual C++ 2017) x64 )
 Copyright (c) 1997-2018 The PHP Group
 Zend Engine v3.3.8, Copyright (c) 1998-2018 Zend Technologies

Modifions la variable d’environnement PATH

Lorsque vous n’installez qu’une seule version de PHP, vous devez indiquer le dossier d’installation de PHP dans la variable « PATH » afin que la commande PHP fonctionne sans avoir besoin d’indiquer le dossier d’installation.

Dans notre cas, nous avons deux dossiers, nous allons donc créer des alias pour lancer la version de PHP que nous souhaitons utiliser dans notre projet.

Commençons par créer le dossier qui contiendra nos alias. Choisissons le dossier C:\bin\cmd\ pour l’exemple.

Ajoutons le chemin vers ce nouveau dossier dans la variable d’environnement « PATH ». Voici comment-y accéder :

Après avoir relancé votre terminal, toutes les commandes qui se trouverons dans le dossier C:\bin\cmd\ pourront être exécutées depuis n’importe quel dossier dans avoir besoin d’en préciser le chemin.

Création des alias vers PHP 7.2, PHP 7.3 et « PHP-latest » 👍

Dans votre dossier C:\bin\cmd\, créons les trois fichiers suivants :

C:\bin\cmd\php-7.2.cmd (La commande php-7.2 lancera PHP 7.2)

"C:\bin\php-7.2\php.exe" %*

C:\bin\cmd\php-7.3.cmd (La commande php-7.3 lancera PHP 7.3)

"C:\bin\php-7.3\php.exe" %*

C:\bin\cmd\php.cmd (La commande php pourra évoluer pour toujours lancer la version la plus récente de PHP. Pour le moment, elle lancera PHP 7.3)

"C:\bin\php-7.3\php.exe" %*

Nous pouvons vérifier nos alias dans notre terminal

php-7.3 -v
C:\bin\php-7.3\php.exe -v
PHP 7.3.8 (cli) (built: Jul 30 2019 12:44:08) ( NTS MSVC15 (Visual C++ 2017) x64 )
 Copyright (c) 1997-2018 The PHP Group
 Zend Engine v3.3.8, Copyright (c) 1998-2018 Zend Technologies
php-7.2 -v
 C:\bin\php-7.2\php.exe -v
PHP 7.2.21 (cli) (built: Jul 30 2019 13:09:38) ( NTS MSVC15 (Visual C++ 2017) x64 )
 Copyright (c) 1997-2018 The PHP Group
 Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

🎉 Félicitation, nos deux nouvelles commandes sont parfaitement opérationnelles ! Voyons maintenant un cas concret sur un projet composer.

Exemple d’utilisation avec composer 🤙

Nous allons initialiser un projet d’exemple PHP avec Composer. Placez-vous dans le dossier de votre choix, par exemple C:\projets\exemple\.

Télécharger composer.phar et placez-le à la racine du dossier.

Ouvrez votre terminal pour initialiser un projet PHP 7.3

cd C:\projets\exemple\
php-7.3 composer.phar init --name="codedesign.fr/exemple" --require="php:7.3.*" -n

Un fichier composer.json a été créé, indiquant que PHP 7.3.* est un pré-requis pour ce projet. Essayons donc d’installer le projet avec PHP 7.2 et PHP 7.3 pour voir si la configuration est correcte.

Avec PHP 7.2, la commande php-7.2 composer.phar install indique que le projet n’est pas compatible avec cette vieille version de PHP :

"C:\bin\php-7.2\php.exe" .\composer.phar install
 Loading composer repositories with package information
 Installing dependencies (including require-dev) from lock file
 Your requirements could not be resolved to an installable set of packages.
 Problem 1
     - This package requires php 7.3.* but your PHP version (7.2.21) does not satisfy that requirement.

Avec PHP 7.3, la commande php-7.3 composer.phar install fonctionne parfaitement 👍 :

"C:\bin\php-7.3\php.exe" .\composer.phar install
 Loading composer repositories with package information
 Updating dependencies (including require-dev)
 Nothing to install or update
 Writing lock file
 Generating autoload files

Installer Node.jS 10 et Node.js 12 sur le même PC

Il est nécessaire de récupérer les versions « binaires » de Node.js. Ne passez donc pas par l’installer (.msi) car il modifiera directement le PATH de Windows rendant la commande « node » accessible en global.

Allez sur https://nodejs.org/en/download/ pour télécharger Node.js 10 LTS et Node.js 12 en version Windows Binary (.zip)

Nous allons ensuite extraire chaque archive dans un dossier différent

  • Créer un dossier C:\bin\node-10\ et y placer le contenu de l’archive Node.js 10
  • Créer un dossier C:\bin\node-12\ et y placer le contenu de l’archive Node.js 12

Dans votre dossier C:\bin\cmd\, créons les fichiers suivants :

C:\bin\cmd\node-10.cmd (La commande node-10 lancera Node.js 10)

"C:\bin\node-10\node.exe" %*

C:\bin\cmd\node-12.cmd (La commande node-12lancera Node.js 12)

"C:\bin\node-12\node.exe" %*

C:\bin\cmd\node.cmd (La commande node pourra évoluer pour toujours lancer la version la plus récente de Node.JS installée sur votre PC.

"C:\bin\node-12\node.exe" %*

Nous pouvons vérifier nos alias dans le terminal

node-10 -v
node-12 -v
"C:\bin\node-10\node.exe" -v
 v10.16.2
 "C:\bin\node-12\node.exe" -v
 v12.8.0

Configurer plusieurs versions de NPM sur vos projets

Si vous utilisez principalement Node.js pour lancer des commandes NPM, vous devez plutôt créer des alias vers NPM directement.

Dans votre dossier C:\bin\cmd\, créons les fichiers suivants :

C:\bin\cmd\node-10-npm.cmd (La commande node-10-npm lancera npm avec Node.js 10)

"C:\bin\node-10\npm.cmd" %*

C:\bin\cmd\node-12-npm.cmd (La commande node-12-npm lancera npm avec Node.js 12)

"C:\bin\node-12\npm.cmd" %*

Nous pouvons tester une de nos commandes NPM pour initialiser un projet.

cd C:\projets\exemple\
node-12-npm init

Pour conclure

Liste des binaires installés
Liste des nouvelles commandes disponibles

N’hésitez pas à créer des alias pour toutes les versions de binaires que vous devrez faire cohabiter sur votre PC, que ça soit PHP, NodeJS, ou autre.

Finalement, c’est assez simple à mettre en place, compatible avec tous vos outils en ligne de commande et ça ne nécessite rien de plus que votre système d’exploitation. 😇

Et vous, quelles-sont vos solutions pour résoudre cette problématique ?

Ressources récentes