Table des matières

, ,

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)

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 \ 
libxml2-dev libxslt-dev php-cli php-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é
pour la mise à jour, on peut simplement exécuter les trois commandes ci-dessus (curl, chmod et mv)

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 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 de 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, 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

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
# et ensuite
phpbrew install 8.1.12 +default +mysql +pgsql
# s'installe correctement"

Voir aussi


Contributeurs : bcag2