Installer PHP 8.3 sur le serveur

Tous les sites et services hébergés sur Apollo tournent actuellement sous PHP 8.2 mais PHP 8.3 vient de pointer le bout de son nez donc nous allons l’installer sur le serveur.

Nouveautés et changements de PHP 8.3

PHP 8.3 marque une avancée notable dans l’univers de PHP, apportant avec elle une panoplie de nouveautés et d’améliorations captivantes. Au cœur de PHP 8.3, on découvre des innovations passionnantes.

Des constantes de classe typées : avec PHP 8.3, place à la précision ! Les constantes de classe se dotent d’un typage explicite, renforçant ainsi la rigueur dans l’application des types et affinant la détection des erreurs.

Récupération dynamique des constantes de classe : simplification à l’horizon ! Cette nouveauté rend la récupération des constantes de classe plus intuitive, rendant ainsi votre code plus clair et plus facile à entretenir.

Le flamboyant attribut #[\Override] : tel un gardien, cet attribut veille à ce qu’une méthode portant le même nom soit présente dans une classe parente ou une interface, boostant la fiabilité de votre code et facilitant son évolution.

Clonage en profondeur des propriétés en lecture seule : PHP 8.3 innove en permettant la modification unique des propriétés en lecture seule dans la méthode __clone, ouvrant la voie à un clonage plus profond.

La fonction innovante json_validate() : vérifier la validité d’un JSON devient un jeu d’enfant avec cette nouvelle fonction, plus efficace et rapide.

La méthode inédite Randomizer::getBytesFromString() : prolongeant l’extension Random de PHP 8.2, cette méthode est un véritable couteau suisse pour générer des chaînes aléatoires spécifiques, idéale pour créer des identifiants uniques comme des noms de domaine.

Un éventail de nouvelles méthodes et fonctions : PHP 8.3 n’est pas avare en nouveautés et offre un large éventail de méthodes et fonctions inédites, telles que DOMElement::getAttributeNames(), IntlCalendar::setDate(), et ldap_connect_wallet(), pour n’en nommer que quelques-unes.

Avec PHP 8.3, non seulement vous bénéficiez d’améliorations de performances et de corrections de bugs, mais aussi d’une expérience de développement web plus fluide et efficace.

PHP 8.3 est-il plus rapide?

Alors on peut se demander si cette nouvelle mouture est bien plus rapide que les versions précédentes. Rien de tel qu’un petit test avec WordPress et WooCommerce.

Sous WordPress 6.4, le site sert:

  • 153 requêtes/s avec PHP 8.2
  • 165 requêtes/s avec PHP 8.3

Sous WooCommerce 8.0, on obtient:

  • 49 requêtes/s avec PHP 8.2
  • 58 requêtes/s avec PHP 8.3

Donc oui, PHP 8.3 est plus rapide que PHP 8.2 et les versions précédentes.

Liste des modules PHP 8.3 à installer

On va commencer par dresser la liste de tous les modules PHP 8.2 installés et nous allons modifier la version de 8.2 à 8.3 à la volée:

dpkg -l | grep php8.2 | grep ii | awk '{print $2}' | sed 's/php8.2/php8.3/g'Code language: JavaScript (javascript)

Résultat:

php8.3
php8.3-apcu
php8.3-bcmath
php8.3-cli
php8.3-common
php8.3-curl
php8.3-fpm
php8.3-gd
php8.3-gmp
php8.3-igbinary
php8.3-imagick
php8.3-imap
php8.3-intl
php8.3-mbstring
php8.3-mysql
php8.3-opcache
php8.3-phpdbg
php8.3-readline
php8.3-redis
php8.3-soap
php8.3-xml
php8.3-zipCode language: CSS (css)

Installation de PHP 8.3

Armé de cette liste, il ne nous reste plus qu’à lancer l’installation de PHP 8.3 et de tous les modules qui nous sont nécessaires:

apt install php8.3 php8.3-{apcu,bcmath,cli,common,curl,fpm,gd,gmp,igbinary,imagick,imap,intl,mbstring,mysql,opcache,phpdbg,readline,redis,soap,xml,zip}

Résultat:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Suggested packages:
  php-pear
The following NEW packages will be installed:
  php8.3 php8.3-apcu php8.3-bcmath php8.3-cli php8.3-common php8.3-curl php8.3-fpm php8.3-gd php8.3-gmp
  php8.3-igbinary php8.3-imagick php8.3-imap php8.3-intl php8.3-mbstring php8.3-mysql php8.3-opcache
  php8.3-phpdbg php8.3-readline php8.3-redis php8.3-soap php8.3-xml php8.3-zip
0 upgraded, 22 newly installed, 0 to remove and 0 not upgraded.
Need to get 8649 kB of archives.
After this operation, 34.0 MB of additional disk space will be used.Code language: CSS (css)

Liste des modules PHP

  • php-cli : Exécute des scripts PHP en ligne de commande.
  • php-fpm : Gestionnaire de processus FastCGI, optimisant le traitement des requêtes.
  • php-curl : Facilite la communication avec le serveur.
  • php-mysqlnd : Pilote natif MySQL pour l’interaction avec les bases de données.
  • php-gd : Bibliothèque de manipulation d’images.
  • php-opcache : Met en cache le bytecode précompilé des scripts pour améliorer les performances de PHP.
  • php-zip : Gère les opérations sur les fichiers zip.
  • php-intl : Prend en charge les jeux de caractères internationaux.
  • php-common : Offre des fonctionnalités communes à divers modules PHP.
  • php-bcmath : Gère l’arithmétique en virgule flottante précise.
  • php-imagick : Traitement d’images avec ImageMagick.
  • php-xmlrpc : Fournit des fonctions de serveur et client XML-RPC.
  • php-readline : Facilite l’entrée interactive en terminal.
  • php-memcached & php-redis : Améliorent les performances grâce à la mise en cache.
  • php-mbstring : Gère les encodages de caractères multioctets.
  • php-apcu : Mise en cache utilisateur pour les performances des applications PHP.
  • php-xml & php-dom : Pour l’analyse et la manipulation XML.

On active maintenant php8.3-fpm pour que le service démarre automatiquement au démarrage du serveur:

sudo systemctl enable php8.3-fpm --nowCode language: CSS (css)

Résultat:

Synchronizing state of php8.3-fpm.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable php8.3-fpmCode language: JavaScript (javascript)

Mise à jour des server blocks NginX

Il ne vous reste plus qu’à tester la compatibilité PHP de votre code avec cette nouvelle version de PHP puis de mettre à jour vos server blocks sous NginX avec:

fastcgi_pass unix:/run/php/php8.3-fpm.sock;Code language: JavaScript (javascript)

et ensuite:

nginx -t
service php8.3-fpm restart
service nginx restartCode language: CSS (css)

Bonne mise à jour!

Vous avez un projet WordPress ou WooCommerce en tête? Transformez votre vision en réalité avec mon expertise reconnue.

Parlons de votre projet dès aujourd'hui »

Articles conseillés :

Opinions