{{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. 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é 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]]//