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 22.04, 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)

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.

sudo apt install build-essential libbz2-dev libreadline-dev libsqlite3-dev libcurl4-gnutls-dev libzip-dev libssl-dev \ 
curl php-xml libxslt-dev php-cli php-bz2 pkg-config

On télécharge ensuite PHPBrew :

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épertoire /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é.

Pour la mise à jour, on peut simplement exécuter les trois commandes ci-dessus (curl, chmod et mv).

On initialise 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 disponibles 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 requiert la bibliothèque oniguruma :
      phpbrew install 8.1.6 +default +mysql -mbstring
  • pour connaître les modules disponibles (et ceux inclus avec +default) :
    phpbrew variants
  • pour basculer sur la version 8.1.6 temporairement (donc revient à la version par défaut au prochain démarrage du terminal) :
    phpbrew use 8.1.6
  • ou basculer de façon permanente
    phpbrew switch 8.1.6
  • pour revenir à la version par défaut du système
    phpbrew off

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

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

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
Pour le tutoriel
  1. L'utilisation de vim demandant une certaine maîtrise, un autre éditeur de texte peut-être utilisé pour éditer les fichiers de configuration, comme nano.
  2. Il est nécessaire d'installer nginx pour faire le tutoriel de grafikart

L'installation de certain module peut poser problème, n'hésitez pas à consulter les tickets voire à en créer un sur page de bugs du dépôt officiel

Problèmes rencontrés

PostgreSQL

Lors de l'installation d'une version de PHP (8.1.11) avec le module pgsql, ça retourne l'erreur :

checking for pg_config... not found
configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation path

Il suffit d'installer au préalable la bibliothèque libpq-dev :

sudo apt install libpq-dev

PHPBrew installe ensuite PHP correctement :

phpbrew install 8.1.12 +default +mysql +pgsql

Not ready

Autre erreur rencontrée :

phpbrew list # ou autre commande
Checking Box requirements:
  E.
 [ERROR] Your system is not ready to run the application.

Dans ce cas, simplement mettre à jour PHPBrew.3)

Voir aussi


Contributeurs : bcag2, …