{{tag>console programmation terminal }}
----
====== PHPBrew ======
[[https://phpbrew.github.io/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 ((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 [[https://github.com/phpbrew/phpbrew/wiki/Requirement#ubuntu-requirements|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 ((https://github.com/phpbrew/phpbrew/issues/1263)) :
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**
- L'utilisation de [[:vim]] demandant une certaine maîtrise, un autre [[:editeur_de_texte|éditeur de texte]] peut-être utilisé pour éditer les fichiers de configuration, comme [[:nano]].
- Il est nécessaire d'installer [[:nginx]] pour faire le tutoriel de [[https://grafikart.fr/tutoriels/phpbrew-multiple-php-versions-1097|grafikart]]
L'installation de certain module peut poser problème, n'hésitez pas à consulter les tickets voire à en créer un sur [[https://github.com/phpbrew/phpbrew/issues/|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 =====
* (EN)[[https://phpbrew.github.io/phpbrew/]] page officiel du dépôt phpbrew
* (fr) [[https://grafikart.fr/tutoriels/phpbrew-multiple-php-versions-1097|tutoriel de grafikart]] (sur lequel est basé cette page)
----
//Contributeurs : [[:utilisateurs/bcag2]]//