Mettre à jour PHP 7.x vers PHP 8.0
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
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 😉
Partager la publication "Mettre à jour PHP 7.x vers PHP 8.0"
bonjour et merci pour ce tuto.
Il fonctionne parfaitement avec une mise à jour php8.1 en adaptant la ligne comme vous le suggéré.
Mes sites sont tous ok, par contre je rencontre un problème pour l'accès à phpmyadmin "erreur 500".
Avez vous une idée de ce que je pourrais essayer.
Merci
Hello,
Euh là comme ça difficile à dire.
Tu utilises quelle version de PMA ? est-elle compatible avec PHP 8 ?