Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Gérer de multiples versions de PHP sur un même serveur

Par Luc ETTLINGER Publié le 23/10/2016 à 01:38:53 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Présentation et objectif de l'article

Objectif de cet article

Dans l'un de mes articles précédents, dénommé « Installation et configuration d’un serveur LAMP / FTP », je détaillais, comme le nom de l'article l’indique, l’installation et la configuration d’un serveur web LAMP, et ce afin de vous permettre d’héberger et exécuter des applications web sur un serveur Ubuntu que vous avez vous-même configuré.

Il arrive néanmoins que des applications plus ou moins anciennes nécessitent des versions antérieures à la version actuelle de PHP (actuellement 7.0 pour la version stable), et, en fonction de la version, cela peut être un véritable casse-tête !

C’est pourquoi je vous propose aujourd’hui de découvrir deux façons de gérer, avec plus ou moins de facilité, les versions de PHP sur vos serveurs LAMP.

Prérequis

Voici une liste des conditions à remplir avant de se lancer dans cet article :

  • Avoir des connaissances de base concernant Linux, ses distributions et le shell (console de commande)

  • Disposer d'une machine (virtuelle ou non) pouvant accueillir le système d'exploitation Ubuntu

  • Avoir installé la dernière version d'Ubuntu sur sa machine : pour plus d'informations sur ce prérequis, voir la très bonne documentation francophone d'Ubuntu ici, site dont je tire d'ailleurs une partie de mes explications. Je conseille fortement l'installation d'une distribution d'Ubuntu avec un interface graphique (Gnome par exemple) afin de simplifier un certain nombre d'étapes de cet article.

Première méthode : PHPBrew

Présentation rapide

PHPBrew permet d'installer et gérer de multiples versions de PHP sur votre machine Linux (Ubuntu dans notre cas).

Voici quelques unes des fonctionnalités de PHPBrew :

  • Compiler et séparer les modules PHP par versions

  • Pouvoir compiler PHP avec différentes variantes, comme PDO, MySQL, SQLite, debug, etc.

  • Changer de versions très facilement

  • Pouvoir facilement installer et activer des extensions de PHP dans l'environnement courrant

  • Ne plus vous soucier de la configuration du PATH

  • Etc.

Suivez le lien suivant pour vous rendre sur le GitHub du projet.

Préparation à l'installation

Afin d’éviter les problèmes de configuration, il est recommandé d’installer les packages listés ci-dessous, dans l’ordre donné :

apt-get build-dep php
apt-get install -y php php-dev php-pear autoconf automake curl libcurl3-openssl-dev build-essential libxslt1-dev re2c libxml2 libxml2-dev php-cli bison libbz2-dev libreadline-dev
apt-get install -y libfreetype6 libfreetype6-dev libpng12-0 libpng12-dev libjpeg-dev libjpeg8-dev libjpeg8  libgd-dev libgd3 libxpm4 libltdl7 libltdl-dev
apt-get install -y libssl-dev openssl
apt-get install -y gettext libgettextpo-dev libgettextpo0
apt-get install -y libicu-dev
apt-get install -y libmhash-dev libmhash2
apt-get install -y libmcrypt-dev libmcrypt4

Bien sûr, certains packages seront certainement déjà installés, il s’agit ici principalement de contrôler que l’environnement soit conforme pour l’exécution de la suite des opérations.

Téléchargement

Une fois que vous êtes sûr de respecter les prérequis, il vous sera possible de commencer l’installation.

Dans un premier temps, il faudra télécharger PHPBrew depuis sa branche GitHub, et accorder (au moins à l’utilisateur courant) les droits adaptés sur le package qui vient d’être téléchargé :

curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
chmod +x phpbrew

# Déplacer phpbrew vers un emplacement facile d’accès
sudo mv phpbrew /usr/bin/phpbrew

Configuration

Une fois l'étape précédente effectuée, il sera nécessaire d’initialiser un script bash pour votre environnement shell :

phpbrew init

Puis ajoutez les lignes suivantes au fichier /etc/bash.bashrc :

export PHPBREW_SET_PROMPT=1
source ~/.phpbrew/bashr

Ces lignes permettront à vos commandes PHPBrew d’être interprétées par votre shell comme des commandes de base du système, grâce au fichier ~/.phpbrew/bashrc de PHPBrew.

Utilisation

Une fois configuré, vous serez en mesure de commencer à utiliser PHPBrew.

Dans un premier temps, vous voudrez certainement connaître les différentes versions de PHP qui vous sont offertes par PHPBrew. La commande phpbrew known vous permet de faire ceci :

phpbrew known

7.0: 7.0.3, 7.0.2, 7.0.1, 7.0.0 ...
5.6: 5.6.18, 5.6.17, 5.6.16, 5.6.15, 5.6.14, 5.6.13, 5.6.12, 5.6.11 ...
5.5: 5.5.32, 5.5.31, 5.5.30, 5.5.29, 5.5.28, 5.5.27, 5.5.26, 5.5.25 ...
5.4: 5.4.45, 5.4.44, 5.4.43, 5.4.42, 5.4.41, 5.4.40, 5.4.39, 5.4.38 ...
5.3: 5.3.29, 5.3.28 ...

Cette commande vous permet de voir les versions majeures de PHP mises à disposition. Si vous cherchez une version mineure précise, rajoutez l'option --more à la fin de la commande précédente.

La commande suivante va simplement vous permettre de mettre à jour PHPBrew :

phpbrew self-update

Cette commande quant à elle va vous permettre de mettre en marche ou arrêter PHPBrew :

phpbrew on/off

phpbrew is turned on/off.

La commande suivante va lister la configuration complète de PHP sur votre serveur, et vous permettra par exemple de voir dans quel répertoires sont installées les extensions utilisées par cette version de PHP, ou encore la version de PHP actuelle :

php-config

La commande suivante est une version simplifiée de la commande précédente, puisqu’elle retournera uniquement la version actuellement utilisée de PHP sur votre serveur :

php -v

De nombreuses autres commandes sont disponibles, visibles en tapant simplement phpbrew sans options supplémentaires dans votre console.

Installer une version spécifique de PHP

Pour installer une version spécifique de PHP sans autres extensions, il suffit d’exécuter la commande :

phpbrew install <version choisie>

Bien évidemment, PHP seul n’est pas très flexible et ne vous sera pas d’une grande aide, c’est pourquoi il existe de nombreuses librairies et variantes, comme expliqué dans la partie qui suit.

Installer PHP avec des librairies et variantes spécifiques

Pour lister toutes les libraires et variantes disponibles, il suffit d’exécuter la commande :

phpbrew variants

Une fois vos variantes choisies, vous serez alors en mesure d’en ajouter à votre installation en rajoutant le préfixe « + » devant le nom de vos variantes, comme on peut en voir un exemple ci-dessous :

sudo phpbrew install 5.5.9 +mysql +pdo +mhash +gd +apache2=/usr/sbin/apache2

Attention, la variante +apache2=/usr/sbin/apache2 est nécessaire afin de faire fonctionner votre version de PHP avec votre serveur web Apache 2.

Lister les versions de PHP disponibles et changer de version

La commande ci-dessous vous permettra de voir les différentes versions de PHP installées à l’aide de PHPBrew sur le serveur :

phpbrew list

Installed versions:
* php-5.5.9

Pour changer de version de PHP utilisée, il faudra dans un premier temps utiliser la commande ci-dessous. Remplacez la version par la version installée désirée :

phpbrew switch php-5.5.9

Puis activez cette version de PHP dans le fichier de configuration d’Apache2 /etc/apache2/mods-enabled/php5.load en renseignant la librairie PHP correspondant à la version choisie :

LoadModule php5_module /usr/lib/apache2/modules/libphp5.5.9.so

Si plusieurs versions sont disponibles, il suffira de commenter celles non désirées pour le moment.

Il est important de préciser que cette petite opération est nécessaire à chaque changement de version de PHP sur le serveur.

Modifier les informations PHP

Il est fortement probable qu’après avoir changé de version, il vous faudra reconfigurer le fichier php.ini spécifique à la version choisie de PHP. La commande suivante vous permettra de connaître l’emplacement de ce fichier pour la version actuelle:

phpbrew info | grep php.ini

Loaded Configuration File => ~/.phpbrew/php/php-5.5.9/etc/php.ini

Installer des extensions tierces avec PHPBrew

L’installation d’extensions tierces pour votre version de PHP est très bien expliquée en suivant ce lien.

Liste des chemins utiles

Fichiers de configuration et de chargement de PHP pour Apache 2 :

sudo nano /etc/apache2/mods-enabled/php5.load
sudo nano /etc/apache2/mods-enabled/php5.conf

Répertoire « racine » d’une version de PHP avec PHPBrew :

cd ~/.phpbrew/php/php-<version>/

Fichiers php.ini d’une version donnée de PHP avec PHPBrew :

sudo nano ~/.phpbrew/php/php-<version>/etc/php.ini

Vous disposez maintenant de toutes les clés pour gérer les versions de PHP sur votre serveur à l'aide de PHPBrew, mais il existe une autre méthode, que nous allons aborder ensemble dans la partie suivante.

Deuxième méthode : utilisation d'archives de packages personnelle (PPA)

Définition

Cette méthode est de loin la plus simple, bien que moins avancée, et pouvant parfois résulter sur des conflits entre différentes versions de PHP si les choses ne sont pas faites correctement.

Une Archive de Packages Personnelle (PPA) est, comme son nom l'indique, une archive créée par un tiers afin de "sauvegarder" des versions antérieures de packages actuels, ou même des packages qui ont disparus avec les nouvelles versions des différentes distributions de Linux.

Il existe un certains nombre de ces PPA, mais certains ont plus de notoriété que d'autres, au point de devenir presque officiels, comme le PPA d'Ondřej Surý que nous allons utiliser afin de récupérer les versions de PHP et extensions qui nous interessent.

Ajouter le PPA à votre système

Dans un premier temps, il vous faudra ajouter le répertoire personnel choisi à la liste des répertoires sources de votre système, et ce à l'aide de cette commande :

sudo add-apt-repository ppa:ondrej/php

Il vous faudra ensuite mettre votre système à jour :

sudo apt-get update

Installer de nouvelles versions de PHP

Pour cela, rien de plus simple, il vous suffit d'exécuter la commande ci-dessous. Votre système cherchera automatiquement le package demandé dans la liste des répertoires sources de votre système, dont le PPA d'Ondřej fait parti grâce à notre manipulation précédente. Remplacez simplement la version par la ou les versions de PHP désirées (si elle compte parmis les versions archivées dans le PPA bien sûr) :

sudo apt-get install php5.6 php7.0

Vous avez maintenant deux versions complètement séparées de PHP installées sur votre système.

Vous pouvez de même obtenir toutes les extensions de cette version de PHP de la même manière que vous le feriez avec la version actuelle de PHP, en indiquant bien sûr le numéro de version.

Configurer et changer de version

Les fichiers de configuration de vos deux versions de PHP sont respectivement situés sous /etc/php/5.6 et /etc/php/7.0. C'est sous ces répertoires que vous pourrez modifier le fichier php.ini propre à chaque version, afin d'ajouter vos extensions, et paramétrer PHP plus en détail, comme expliqué dans mon premier article « Installation et configuration d’un serveur LAMP / FTP ».

Afin d'activer une version de PHP, il vous faudra exécuter la commande suivante :

sudo a2enmod php7.0

Afin de désactiver une version de PHP, il vous faudra exécuter la commande suivante :

sudo a2dismod php5.6

Il va de soi que deux versions de PHP ne peuvent être actives en même temps, tout comme avec PHPBrew.

Afin d'appliquer votre changement de version, vous devrez redémarrer votre serveur web Apache pour qu'il prenne en compte les modifications :

sudo service apache2 restart

Vous disposez maintenant de toutes les clés pour gérer les versions de PHP sur votre serveur "manuellement" !

Conclusion

Félicitations ! Grâce à cet article, et quelle que soit la méthode que vous avez choisi, vous êtes maintenant en mesure de changer à volonté de version de PHP sur votre serveur, et donc d'exécuter sans le moindre soucis de version toutes les applications que vous serez amené à développer et tester.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels