Mise à jour de PHP avec le dépôt ondrej/php sur un serveur Ubuntu
Publié le 25/07/2022 • Actualisé le 25/07/2022
Dans cet article, nous voyons comment mettre à jour PHP avec le dépôt ondrej/php sur un serveur Ubuntu, étape par étape, afin de ne rien oublier. C'est parti ! 😎
Configuration
La migration a été démarrée à partir des versions suivantes :
- Ubuntu Ubuntu 22.04.3 LTS
- Apache 2.4.29
- PHP 8.2
Pour migrer vers PHP 8.3.
Introduction
La dernière fois que j'ai mis à jour PHP sur mon serveur, je l'ai fait en regardant quelques articles à ce sujet sur Internet. Je voulais un mémo ici, sur mon blog, afin de ne pas avoir à chercher encore et encore les étapes dans le but de de migrer efficacement sans avoir peur de casser quelque chose. Comme vous pouvez le voir, j'utilise une veille version LTS d'Ubuntu, mais grâce au dépôt ondrej/php, on a accès à toutes les versions de PHP qui ne seraient pas disponibles sans ça.
But
Le but est d'avoir une liste d'étapes précises, pour ne rien oublier, et que tout se déroule sans accroc. On a presque uniquement une succession de copier-coller.
Sauvegarde du serveur
J'ai un VPS (Serveur Privé Virtuel) hébergé chez OVH. Sur mon tableau de bord, j'ai une option permettant de créer une image complète du serveur. J'ai donc juste à lancer cette procédure avant de démarrer la migration.
Sauvegarde de la liste des extensions PHP installées actuellement
Que l'on puisse comparer avec la liste relative à la nouvelle version de PHP vers laquelle nous mettons à jour.
php -m > php82-modules.txt
On a quelque chose comme cela. Cette liste peut être utile en cas de problème.
[PHP Modules]
calendar
Core
ctype
curl
date
dom
exif
FFI
...
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
Localisation du fichier php.ini actuel
php -i | grep php.ini
Configuration File (php.ini) Path => /etc/php/8.2/cli
Loaded Configuration File => /etc/php/8.2/cli/php.ini
On peut vérifier et sauvegarder les paramètres les plus importants. Par exemple :
date.timezone = Europe/Paris
Mise à jour d'apt
sudo apt update
Vérification des alternatives php installées
update-alternatives --config php
There are 3 choices for the alternative php (providing /usr/bin/php).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/php.default 100 auto mode
1 /usr/bin/php.default 100 manual mode
* 3 /usr/bin/php8.1 81 manual mode
4 /usr/bin/php8.2 82 manual mode
On vérifie que la version vers laquelle nous voulons migrer est bien disponible. C'est bien le cas ici. Sortez sans changer de version pour l'instant.
Lister les paquets installés pour la version courante de PHP
apt list --installed | grep php8.2
php8.2-cli/jammy,now 8.2.14-1+ubuntu22.04.1+deb.sury.org+1 amd64 [installed,automatic]
php8.2-common/jammy,now 8.2.14-1+ubuntu22.04.1+deb.sury.org+1 amd64 [installed,automatic]
php8.2-curl/jammy,now 8.2.14-1+ubuntu22.04.1+deb.sury.org+1 amd64 [installed]
php8.2-fpm/jammy,now 8.2.14-1+ubuntu22.04.1+deb.sury.org+1 amd64 [installed]
php8.2-gd/jammy,now 8.2.14-1+ubuntu22.04.1+deb.sury.org+1 amd64 [installed]
php8.2-imagick/jammy,now 3.7.0-4+ubuntu22.04.1+deb.sury.org+2 amd64 [installed]
php8.2-intl/jammy,now 8.2.14-1+ubuntu22.04.1+deb.sury.org+1 amd64 [installed]
php8.2-mbstring/jammy,now 8.2.14-1+ubuntu22.04.1+deb.sury.org+1 amd64 [installed]
php8.2-mysql/jammy,now 8.2.14-1+ubuntu22.04.1+deb.sury.org+1 amd64 [installed]
php8.2-opcache/jammy,now 8.2.14-1+ubuntu22.04.1+deb.sury.org+1 amd64 [installed]
php8.2-pgsql/jammy,now 8.2.14-1+ubuntu22.04.1+deb.sury.org+1 amd64 [installed]
php8.2-readline/jammy,now 8.2.14-1+ubuntu22.04.1+deb.sury.org+1 amd64 [installed,automatic]
php8.2-soap/jammy,now 8.2.14-1+ubuntu22.04.1+deb.sury.org+1 amd64 [installed]
php8.2-sqlite3/jammy,now 8.2.14-1+ubuntu22.04.1+deb.sury.org+1 amd64 [installed]
php8.2-xml/jammy,now 8.2.14-1+ubuntu22.04.1+deb.sury.org+1 amd64 [installed]
php8.2-zip/jammy,now 8.2.14-1+ubuntu22.04.1+deb.sury.org+1 amd64 [installed]
php8.2/jammy,now 8.2.14-1+ubuntu22.04.1+deb.sury.org+1 all [installed]
Faites de même pour la nouvelle version, comparez les deux et listez les paquets manquants
Installation des paquets manquants pour la nouvelle version
Prenez les paquets manquants de l'étape précédente, remplacez les dans la ligne de commande suivante puis lancez-la. On peut tout installer d'un coup grâce à cette astuce.
sudo apt install php8.3-{curl,gd,imagick,intl,mbstring,mysql,opcache,pgsql,soap,sqlite3,xml,zip}
Installer le module Apache pour PHP 8.3
apt install libapache2-mod-php8.3
Désactiver le module Apache pour PHP 8.2
a2dismod php8.2
Activer le module Apache pour PHP 8.3
a2enmod php8.3
Sélectionner la nouvelle alternative PHP
update-alternatives --config php
Cette fois, on choisit et l'on valide la nouvelle version. Maintenant, en ligne de commande, on peut vérifier que l'on a bien la bonne version de PHP :
php -v
PHP 8.3.1 (cli) (built: Dec 21 2023 20:12:13) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.1, Copyright (c) Zend Technologies
with Zend OPcache v8.3.1, Copyright (c), by Zend Technologies
Conclusion
Mettre à jour PHP avec le dépôt ondrej/php est facile. J'ai migré tous mes sites sur un VPS tout neuf en décembre 2023, celui-ci fait tourner la distribution Ubuntu 22.04 LTS. J'éditerai cet article dès que je ferais une mise à jour, c'est-à-dire pour chaque version mineure de PHP.
Et voilà ! J'espère que vous avez aimé. Découvrez d'autres informations en rapport à cet article avec les liens ci-dessous. Comme toujours, retours, likes et retweets sont les bienvenus. (voir la boîte ci-dessous) À tantôt ! COil. 😊
Plus sur le web Plus sur Stackoverflow
A vous de jouer !
Ces articles vous ont été utiles ? Vous pouvez m'aider à votre tour de plusieurs manières : (cf le tweet à droite pour me contacter )
- Me remonter des erreurs ou typos.
- Me remonter des choses qui pourraient être améliorées.
- Aimez et retweetez !
- Suivez moi sur Twitter Suivez moi sur Twitter
- Inscrivez-vous au flux RSS.
- Cliquez sur les boutons Plus sur Stackoverflow pour me faire gagner des badges "annonceur" 🏅.
Merci d'avoir tenu jusque ici et à très bientôt sur Strangebuzz ! 😉
First successful build with Symfony 5.4 + PHP 8.1 on https://t.co/Lad4KHJwoM 😊 The Symfony6 migration will take more time as all vendors have to be compatible with this new major version (I'll try to send PRs as much as I can 💪... I hope you too). #symfony #php #php80 #php81 pic.twitter.com/EutIV7MCgC
— COil #OnEstLaTech ✊ 🇺🇦 (@C0il) November 13, 2021