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 ! 😎


English language detected! 🇬🇧

  We noticed that your browser is using English. Do you want to read this post in this language?

Read the english version 🇬🇧 Close

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

  Travaillez avec moi !


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
  • 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 ! 😉

COil