PHPBrew

PHPBrew est un utilitaire qui permet d'installer de multiples versions de PHP (5), 7 et 8 et de ses extensions, et de basculer facilement de l'une à l'autre. Il est essentiellement utile sur une machine de développement. Pour un serveur, on privilégiera l'utilisation de docker.

Selon la version d’Ubuntu, des problèmes pour installer certaines versions de PHP peuvent se poser, liés à des contraintes de dépendances. Par exemple sous Jammy, l’installation de PHP 7.4 requière la bibliothèque oniguruma, problème qu’on peut éviter en évitant l’installation du module mbstring : ajouter l’option -mbstring, … mais on passe alors à une erreur liée à OpenSSL… qui nécessite de compiler la version OpenSSL plus ancienne qui va avec 1)https://github.com/phpbrew/phpbrew/issues/1263

Installation

Il faut installer certains paquets dont aura besoin PHPBrew. Selon sa version d'Ubuntu, cela peut changer un peu, reportez-vous à la page Ubuntu Requirements du projet.

Pour jammy, cela donne :

sudo apt install build-essential libbz2-dev libreadline-dev libsqlite3-dev libcurl4-gnutls-dev libzip-dev libssl-dev libxml2-dev libxslt-dev php8.1-cli php8.1-bz2 pkg-config

Pour focal, cela donne :

sudo apt install build-essential libbz2-dev libreadline-dev libsqlite3-dev libcurl4-gnutls-dev libzip-dev libssl-dev libxml2-dev libxslt-dev php7.4-cli php7.4-bz2 pkg-config

On télécharge et installe ensuite phpbrew :

# téléchargement curl -L -O https://github.com/phpbrew/phpbrew/releases/latest/download/phpbrew.phar # ajout des droits d'exécution chmod +x phpbrew.phar # déplacement dans le bon répertoire et renommage sudo mv phpbrew.phar /usr/local/bin/phpbrew # on peut vérifier que le répertoie /usr/local/bin est bien défini dans la variable d'environnement $PATH echo $PATH | grep "usr/local/bin" # usr/local/bin doit ressortir surligné

on intialise phpbrew :

phpbrew init

puis on ajoute à son fichier ~/.bashrc la ligne :

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

on recharge notre fichier .bashrc :

source ~/.bashrc # puis on définit le préfixe par défaut pour la recherche des bibliothèque phpbrew lookup-prefix ubuntu

Utilisation

Quelques commandes

# pour lister les versions disponible de base phpbrew known # pour ajouter les versions 5 : phpbrew update --old # ajouter une version PHP sur sa machine : # la version 8.1.6 avec les modules par défaut, le module mysql et on évite le module mbstring qui nécessite la bibliothèque oniguruma phpbrew install 8.1.6 +default +mysql -mbstring # pour basculer sur cette version 8.1.6 temporairement donc revient à la version par défaut au prochain démarrage de terminal phpbrew use 8.1.6 # ou basculer de façon permanente phpbrew switch 8.1.6

Installer PHP 7.4 sous Jammy (PHP8 par défaut)

Sous jammy, il faut installer la librairie Oniguruma (libonig-dev) et compiler la version d'OpenSSL compatible, cela donne les lignes suivantes 1) :

sudo apt install libonig-dev cd $HOME wget https://www.openssl.org/source/openssl-1.1.1i.tar.gz tar xzf $HOME/openssl-1.1.1i.tar.gz cd openssl-1.1.1i ./Configure --prefix=$HOME/openssl-1.1.1i/bin -fPIC -shared linux-x86_64 make -j 8 make install export PKG_CONFIG_PATH=$HOME/openssl-1.1.1i/bin/lib/pkgconfig && phpbrew --debug install 7.4 +default

Et si tout s'est bien passé, on peut vérifier avec

phpbrew use php-7.4.30 php -v # qui doit retourner quelques lignes telle que : PHP 7.4.30 (cli) (built: Jun 30 2022 18:11:43) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies

Voir aussi

(fr) tutoriel de grafikart (sur lequel est basé cette page)

Crée par bertrand