Lorsque l’on développe en PHP de multiples projets, il peut arriver qu’on doive jongler entre plusieurs versions de PHP. On peut bien sûr compiler et installer plusieurs exécutables et configurer chaque projet pour lancer la version requise, mais il est beaucoup plus confortable de confier cette tâche à un manager.

Aujourd’hui, je vous présente phpbrew.

Attention : phpbrew n’est disponible que sous Linux ou OsX. Pour installer un environnement Linux sous Windows, je vous renvoie vers mon article précédent : Installer Linux sous Windows 10.

Cet article ne traite que de l’utilisation sous Ubuntu, utilisé sous Windows 10 lors de la rédaction de l’article.

Installation

Téléchargez l’utilitaire avec la commande suivante :

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

Donnez les droit d’exécution à l’utilitaire :

chmod +x phpbrew

Déplacez l’utilitaire dans l’un des répertoires du $PATH

sudo mv phpbrew /usr/local/bin/phpbrew

Dépendances

Installez les dépendances

sudo apt-get install php php-curl php-dev php-pear autoconf automake curl libcurl3-openssl-dev build-essential libxslt1-dev re2c libxml2 libxml2-dev php-cli bison libbz2-dev libreadline-dev libicu-dev libcurl4-gnutls-dev libmcrypt-dev

Note : merci à l’auteur du blog https://blog.kmelia.net/testing/prise-en-main-rapide-de-phpbrew/13224 pour cette liste des dépendances car celle de la documentation officielle ne fonctionne pas directement :). Je l’ai complétée en fonction des besoins d’aujourd’hui.

Initialisez phpbrew

Initialisez phpbrew en lançant la commande suivante :

phpbrew init

Phpbrew aura à gérer les alias vers les exécutables php. Pour cela, il gère son propre ficher .bashrc que votre propre bashrc devra simplement charger. Ajoutez à votre fichier ~/.bashrc la ligne suivante :

[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc

puis rechargez votre bashrc :

source ~/.phpbrew/bashrc

Installez une version de PHP

Vous obtenez la liste des versions de PHP gérables par phpbrew à partir de la commande :

phpbrew known

A la rédaction de cet article, la liste est la suivante :

alan@localhost:~$ phpbrew known
Read local release list (last update: 2018-09-06 12:21:03 UTC).
You can run `phpbrew update` or `phpbrew known --update` to get a newer release list.
7.2: 7.2.9, 7.2.8, 7.2.7, 7.2.6, 7.2.5, 7.2.4, 7.2.3, 7.2.2 ...
7.1: 7.1.21, 7.1.20, 7.1.19, 7.1.18, 7.1.17, 7.1.16, 7.1.15, 7.1.14 ...
7.0: 7.0.31, 7.0.30, 7.0.29, 7.0.28, 7.0.27, 7.0.26, 7.0.25, 7.0.24 ...
5.6: 5.6.37, 5.6.36, 5.6.35, 5.6.34, 5.6.33, 5.6.32, 5.6.31, 5.6.30 ...
5.5: 5.5.38, 5.5.37, 5.5.36, 5.5.35, 5.5.34, 5.5.33, 5.5.32, 5.5.31 ...
5.4: 5.4.45, 5.4.44, 5.4.43, 5.4.42, 5.4.41, 5.4.40, 5.4.39, 5.4.38 ...

Installons la dernière version de PHP 7.2 pour un projet à démarrer aujourd’hui.

phpbrew install 7.2.9 +default

L’instruction +default indique à phpbrew de charger les versions de PHP accompagnées des extensions les plus communément utilisées. Il est possible de customiser ce choix d’extensions en se référant à la documentation officielle : https://github.com/phpbrew/phpbrew.

Si le téléchargement est relativement rapide, la compilation de PHP et de ses différentes extensions par phpbrew est en revanche très longue. Vous avez largement le temps d’aller vous faire chauffer un café. Sur mon Intel Core i5 à 2.5GHZ, la compilation a pris 20 minutes.

Pour activer l’utilisation de cette version, utilisez la commande suivante :

phpbrew use php-7.2.9

Vérifions maintenant que le système utilise bien la bonne version de PHP :

alan@localhost:~$ php -v
PHP 7.2.9 (cli) (built: Sep  6 2018 15:29:26) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

Bingo ! Merci phpbrew 🙂

Changer de version de PHP

Admettons maintenant que nous avons besoin de downgrader vers PHP 7.0.31 pour travailler sur un projet plus ancien.

sudo apt-get install openssl=1.0.2*/
sudo apt-get install libssl-dev=1.0.2*/
phpbrew install 7.0.31 +default

C’est reparti pour 20 minutes de compilation…

Une fois l’installation d’une nouvelle version de PHP terminée, vous pouvez lister les versions installées via

phpbrew list

Vous devriez obtenir un résultat comparable à

alan@localhost:~$ phpbrew list
* (system)
  php-7.2.9
  php-7.0.31

Et la commande phpbrew use vous permet maintenant de passer d’une version à l’autre en toute simplicité.

Retrouvez plus d’information et la documentation officielle de phpbrew sur https://github.com/phpbrew/phpbrew