On part d'une installation Debian avec un serveur Apache2 et on se connecte au surveur web en SSH avec un utilisateur sudo. On commence par mettre à jour la distribution avec la commande :
sudo apt update & upgrade -y
Ensuite on regarde ce qui est installé actuellement et on récupère cette liste :
sudo dpkg -l | grep php
ii libapache2-mod-php 2:7.3+69 all server-side, HTML-embedded scripting language (Apache 2 module) (default)
ii libapache2-mod-php7.3 7.3.31-1~deb10u1 amd64 server-side, HTML-embedded scripting language (Apache 2 module)
ii php 2:7.3+69 all server-side, HTML-embedded scripting language (default)
ii php-cli 2:7.3+69 all command-line interpreter for the PHP scripting language (default)
ii php-common 2:69 all Common files for PHP packages
ii php-curl 2:7.3+69 all CURL module for PHP [default]
ii php-gd 2:7.3+69 all GD module for PHP [default]
ii php-gmp 2:7.3+69 all GMP module for PHP [default]
ii php-intl 2:7.3+69 all Internationalisation module for PHP [default]
ii php-mbstring 2:7.3+69 all MBSTRING module for PHP [default]
ii php-mysql 2:7.3+69 all MySQL module for PHP [default]
ii php-xml 2:7.3+69 all DOM, SimpleXML, WDDX, XML, and XSL module for PHP [default]
ii php-xmlrpc 2:7.3+69 all XMLRPC-EPI module for PHP [default]
ii php-zip 2:7.3+69 all Zip module for PHP [default]
ii php7.3 7.3.31-1~deb10u1 all server-side, HTML-embedded scripting language (metapackage)
ii php7.3-cli 7.3.31-1~deb10u1 amd64 command-line interpreter for the PHP scripting language
ii php7.3-common 7.3.31-1~deb10u1 amd64 documentation, examples and common module for PHP
ii php7.3-curl 7.3.31-1~deb10u1 amd64 CURL module for PHP
ii php7.3-gd 7.3.31-1~deb10u1 amd64 GD module for PHP
ii php7.3-gmp 7.3.31-1~deb10u1 amd64 GMP module for PHP
ii php7.3-intl 7.3.31-1~deb10u1 amd64 Internationalisation module for PHP
ii php7.3-json 7.3.31-1~deb10u1 amd64 JSON module for PHP
ii php7.3-mbstring 7.3.31-1~deb10u1 amd64 MBSTRING module for PHP
ii php7.3-mysql 7.3.31-1~deb10u1 amd64 MySQL module for PHP
ii php7.3-opcache 7.3.31-1~deb10u1 amd64 Zend OpCache module for PHP
ii php7.3-readline 7.3.31-1~deb10u1 amd64 readline module for PHP
ii php7.3-xml 7.3.31-1~deb10u1 amd64 DOM, SimpleXML, WDDX, XML, and XSL module for PHP
ii php7.3-xmlrpc 7.3.31-1~deb10u1 amd64 XMLRPC-EPI module for PHP
ii php7.3-zip 7.3.31-1~deb10u1 amd64 Zip module for PHP
On voit qu'on a effectivement la version 7.3 de PHP. IL va falloir la mettre à jour vers la version suivante. Pour cela il faut récupérer une liste de paquetages que le système saura installer. Ici on enchaine plusieurs commandes qui installent de quoi récupérer la liste des paquetages php disponible pour le serveur, on ajoute le lien dans le gestionnaire de paquetages et on met à jour la liste :
sudo apt install apt-transport-https lsb-release ca-certificates curl -y
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
Voila, le système de paquetages du serveur va svoir installer ce qu'on veut. On commence par PHP lui même :
sudo apt install php7.4 php7.4-common php7.4-cli
D'après la liste de ce qu'on avait d'installer sur le serveur au début de ce billet, on installe les paquetages correspondant :
Attention la liste ici est juste pour l'exemple, votre serveur n'a pas forcément ces paquetage et en a peut-être d'autres en plus.
sudo apt install php7.4-curl php7.4-gd php7.4-gmp php7.4-intl php7.4-json php7.4-mbstring php7.4-mysql php7.4-opcache php7.4-readline php7.4-xml php7.4-xmlrpc php7.4-zip
Enfin on installe le module PHP d'apache2 :
Normalement il va être automatiquement installer en dépendance des paquetages précédents.
sudo apt install libapache2-mod-php7.4
On nettoie les paquetages qui sont désormais inutiles :
sudo apt purge php7.3 php7.3-common
On désactive l'ancien module et on active le nouveau :
Normalement l'ancien devrait déjà avoir disparu avec la commande purge.
sudo a2dismod php7.3
sudo a2enmod php7.4
Enfin on redémarre Apache :
sudo service apache2 restart
Voila un beau serveur en php 7.4.
Les commandes restent les mêmes pour monter jusqu'à la dernière version (actuellement 8.1) de php. A ceci près qu'il faudra peut-être reconfigurer le fichier ini de php (/etc/php/x.x/apache2/php.ini) Il a également fallu que je désactive l'extension php xmlrpc (ajouter ; au début de la ligne du fichier /etc/php/8.1/apache2/conf.d/20-xmlrpc.ini) pour la version actuelle de Dotclear qui contient déjà des classes faisant la même chose.
1 De Franck -
Bizarre pour xmlrpc, faudra peut-être qu'on prenne ça en compte côté Clearbricks pour éviter de devoir spécialiser la config Apache juste pour Dotclear.
2 De Nicolas -
Pendant la mise à jour, débarrasse toi du module apache et passe à fpm !
De plus la version 7.4 est en fin de vie et tu peux passer directement à 8.0 ou directement 8.1.1
3 De JcDenis -
@ franck : Perso je ne m'en soucis pas, je suis en espace de nom chez moi donc plus de problème de ce genre 🙄 😃
Mais effectivement l'extension xmlrpc de php si elle est active porte les mêmes noms de classes que dans clearbricks et lève des erreurs.
@ Nicolas : Pour la version de php sur mes serveurs en production je suis resté en 7.4.x, je suis le mouvement tranquillement, Dotclear ronchonnant encore avec les plus récentes versions de php. Pour les autres serveurs je suis monté en 8.1.1 hier 🙂
Pour fpm, je n'ai jamais regardé ce que ça fait, un jour j'y passerais...