La distribution GNU/Linux Debian 10 buster contient dans ses dépôts officiels la version 7.3 de PHP (Hypertext Preprocessor) lorsque vous installer le méta pacquet php. De plus, lorsque vous utilisez Apache comme serveur http pour servir vos applications web écrites en PHP, vous utilisez bien souvent le package libapache2-mod-php qui vous fournit depuis les dépôts officiels de debian la version pour PHP 7.3, ce qui semble logique. Lorsque vous avez installé PHP via apt install php
et que vous souhaitez connaître la version de PHP avec php -v
vous obtenez une sortie semblable à :
PHP 7.3.19-1 .....
Mise à jour de PHP
Pour mettre à jour votre version de PHP, il faut suivre les premières étapes suivantes :
Téléchargement et ajout de la clé gpg pour le dépôt PPA de PHP :
sudo apt -y install lsb-release apt-transport-https ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
Ensuite installons PHP 7.4 depuis ce ppa fraîchement configuré :
sudo apt update
sudo apt -y install php7.4
A ce moment là si vous faites php -v
vous devriez avoir un retour comme celui-ci :
PHP 7.4.9 ...
On peut donc en conclure que PHP a bien été mis à jour.
Cependant si vous mettez un fichier PHP avec un phpinfo();
à l’intérieur est que vous l’appelez à travers votre apache, la réponse sera que la version utilisé de PHP est la 7.3.
Deux versions de PHP en parallèle
Vous avez à ce moment là 2 versions de PHP installer en parallèle, la 7.3 et la 7.4, si vous n’avez plus besoin de la version 7.3 vous vous dites que vous pouvez la désinstaller sans souci avec sudo apt purge php7.3
suivi ou non par un sudo apt autoremove
pour faire le ménage. Oui et non si vous faites cela à l’instant vous allez vous retrouver avec vos fichiers php qui ne seront plus interprété par apache (si ce n’est pas un serveur de prod vous pouvez faire le test).
Pourquoi mes fichiers PHP ne sont plus interprétés par apache
La réponse est logique mais pas évidente, comme je vous le mentionnais en début d’article, l’installation du méta paquet php installe aussi apache2 et le module libapache2-mod-php. Tout ceci fonctionne bien ensemble, php 7.3 compatible avec libapache2-mod-php développé pour la version spécifique de php 7.3, donc lorsque l’on purge php7.3 il désinstalle le module apache associé et vos fichiers php ne sont plus interprétés par apache2.
Ok mais j’ai installé php7.4, ne m’a t-il pas installé libapache2-mod-php pour la version php 7.4 ? Vous avez raison le méta paquet php7.4 installe bien libapache2-mod-php pour la version php 7.4 mais ce derniers n’est pas automatiquement activé car il existait à ce moment là encore le module libapache2-mod-php pour la version php 7.3 et ces 2 modules sont incompatibles ensemble c’est pourquoi vous devez lancer les 2 commandes suivantes :
sudo a2dismod php7.3
sudo a2enmod php7.4
La première commande va désactiver le module libapache2-mod-php pour la version php 7.3 s’il est encore présent et la seconde va activer le module libapache2-mod-php pour la version php 7.4 enfin après systemctl restart apache2
, vous pouvez vérifier votre fichier php contenant le phpinfo();
qui devrait maintenant vous indiquez PHP 7.4
Vous avez retrouver l’interprétation de vos fichiers PHP, la mise à jour est terminée, sauf s’il vous manque des extensions php à installer avec par exemple pour l’extension common :
sudo apt install php7.4-common
Vous pouvez aussi si vous le souhaitez purger les extensions php7.3 comme ceci sudo apt purge php7.3-common
pour l’extension common.
Sources : https://geekmag.fr/blog/2020/01/25/installer-php-7-4-sur-debian-10-ou-debian-9/