JusteGeek

Mettre à jour PHP 7.x vers PHP 8.0

PHP 8

PHP 8

Hier, j'ai occupé une partie de ma journée de RTT à migrer un serveur PHP initialement en version PHP 7.x vers PHP 8.0. Du coup je vous propose aujourd'hui un petit guide pour ceux qui auraient envie (ou besoin) de faire la même chose.

Le contexte de cette migration PHP 7.x vers PHP 8.0

Il est important tout d'abord de préciser le contexte dans lequel j'ai effectué mes manipulations. Le système d'exploitation du serveur est Debian 10 Buster, sur lequel tourne le serveur web Apache2 ainsi que PHP 7.3 avec son module FPM. Les commandes qui suivent seront donc peut-être à adapter en fonction de votre configuration / situation.

Avant de commencer les opérations, je vous recommande bien évidemment d'effectuer une sauvegarde de votre serveur et des sites web qui sont hébergés dessus. Si vous aviez fait des modifications sur les fichiers de configuration, comme par exemple le fichier php.ini, pensez à en faire une copie au préalable pour retrouver vos réglages en cas de besoin.

Pensez à vérifiez au préalable que vos différents sites / CMS sont compatibles avec PHP 8 car ce n'est pas le cas de tous. À titre d'exemple, l'ERP/CRM Dolibarr n'est, par exemple, pas encore compatible avec PHP 8 au moment où je rédige ce tutoriel...

On va ensuite se créer une liste de référence des packages PHP initialement installés, pour pouvoir les réinstaller dans leur bonne version (si toutefois ils existent... car il y a des packages qui ont été abandonnés avec la version 8, comme par exemple le module recode). Pour créer cette liste, utilisez la commande suivante en adaptant au besoin le chemin de sortie :

dpkg -l | grep php > php7_installed.txt

Je pense que maintenant on est prêt pour rentrer dans le vif du sujet !

Désinstallation de PHP 7

C'est là que les choses sérieuses commencent, puisqu'on va commencer par désinstaller l'ancienne version de PHP. Pour cela, il suffit de rentrer la commande suivante :

apt-get purge php7.*

On va aussi en profiter pour supprimer le package php-imagick puisque je vais installer le nouveau package imagick pour PHP 8 :

apt-get purge php-imagick

On va ensuite faire un peu de nettoyage post-desisntall :

apt-get autoclean && apt-get autoremove

Ajout du repository pour PHP 8

On va ici ajouter le repository Sury pour pouvoir bénéficier de PHP 8. Si vous avez déjà ce dépôts dans vos sources logicielles, vous pouvez passer à l'étape suivante.

Pour ajouter le repo Sury, entrez les commandes suivantes :

apt-add-repository "deb https://packages.sury.org/php/ buster main"
wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -

On va ensuite exécuter un petit update pour rafraichir la liste des paquets disponibles :

apt update

Installation de PHP 8.0

Maintenant que le ménage est fait et que nous disposons des sources, l'installation de PHP 8 va être un jeu d'enfant. Je vais pour ma part installer PHP 8.0 ainsi que tous les modules qui m'intéressent dans la même commande, via un simple apt install en me référant au fichier txt créé au début de ce billet :

apt-get install php8.0 php8.0-bz2 php8.0-common php8.0-curl php8.0-fpm php8.0-gmagick php8.0-gmp php8.0-imagick php8.0-mysql php8.0-igbinary php8.0-bcmath php8.0-cli php8.0-dev php8.0-gd php8.0-gmp  php8.0-imap php8.0-intl php8.0-mbstring  php8.0-opcache php8.0-readline php8.0-zip

Sachez que si vous recherchez dans le dépôts Sury, vous pourrez trouver des paquets PHP 8.1. Mais je n'ai pas opté pour cette version, car elle est toujours en développement et sa sortie est prévue, je crois, pour le 25 novembre prochain. Encore un peu de patience donc...

Une fois que tout est installé, il ne reste plus qu'à activer php8.0-fpm et recharger apache2 :

a2enmod proxy_fcgi setenvif
a2enconf php8.0-fpm
systemctl reload apache2

Vérification

Maintenant que c'est installé et fonctionnel, vous pouvez contrôler la version de PHP dans un terminal, en saisissant :

php -v
La commande php -v permet de contrôler la version de PHP installée

On va aller un peu plus loin dans la vérification en créant un fichier phpinfo qui nous permettra de contrôler la version de PHP ainsi que les modules activés. Créez simplement un fichier info.php à la racine de votre site, et collez le code suivant dedans :

<?php
phpinfo();
?>

Rendez-vous ensuite sur votre site : http://votresite/info.php et si vous voyez votre page de configuration PHP, c'est que c'est plutôt pas mal. Vous pouvez maintenant scroller pour vérifier que PHP et ses modules sont OK. Il ne vous reste plus qu'à reporter vos éventuelles modifications de configuration de PHP (php.ini par exemple).

Et voilà, ce tutoriel de mise à jour de PHP 7.x vers PHP 8.0 est terminé : vous disposez maintenant de PHP 8.0 sur votre serveur. Je vous donne rendez-vous dans quelques semaines / mois pour une migration vers PHP 8.1 😉

Quitter la version mobile