Mise à jour PHP

Vous le savez peut-être déjà, PHP est un langage de script adapté au développement Web qui s’exécute côté serveur.
PHP est utilisé pratiquement sur tous les sites web, du blog aux sites web les plus populaires au monde.

PHP étant très utilisé, il faut alors bien surveiller la publication des mises-à-jour concernant la sécurité, afin de corriger les vulnérabilités sur vos serveurs.
Pour connaitre le cycle de vie d’une version de PHP, voir la page suivante : https://www.php.net/supported-versions.php

Une version de PHP est généralement supportée (mises-à-jour régulières) durant 3 ans (2 ans en « full support », suivis de 1 an en « support sécurité critique uniquement »).
A ce jour (19.10.2021), les versions de PHP antérieures à la version 7.3 ne sont plus supportées. La version 7.3 arrive en fin de « support sécurité » le 06.12.2021.

Donc si vous utilisez encore une version 7.3 ou antérieure de PHP, il faut immédiatement songer à mettre-à-jour (serveurs + applications) vers une version supportée (7.4 ou 8.0) selon le tableau.

A savoir que la version 7.4 de PHP est actuellement supportée pour les mises-à-jour de sécurité critique uniquement jusqu’au 28.11.2022, ensuite cette version ne sera plus supportée.

Mise-à-jour de PHP vers une version majeure

A faire (liste non exaustive) :

  • Effectuer une sauvegarde avant tout changement/modification
  • Lire les différences et nouveautés que la nouvelle version apporte (Release notes)
  • Effectuer un clône du serveur de production, pour avoir un serveur de test
  • Sur le serveur de test, installer la nouvelle version de PHP, supprimer l’ancienne version puis analyser l’impact
  • Tester chaque application web utilisant PHP
  • Analyser les erreurs et corriger un par un dans le code selon les recommandations de la nouvelle version de PHP
Vérification de compatibilité

Il est possible même avant d’installer la nouvelle version de PHP, de savoir la compatibilité du code PHP pour une version précise, en utilisant ces deux outils :

  • PHP_CodeSniffer : Permet de détecter des erreurs de syntax, violation de codage selon un standard de codage (PHP, JavaScript et CSS).
  • PHPCompatibility : C’est une librairie (sniffs) de standard pour « PHP_CodeSniffer » pour vérifier la compatibilité de PHP entre les versions. Elle permet d’analyser le code pour connaître la compatibilité avec les versions supérieures et inférieures de PHP.

Concernant l’installation des deux outils, il faut simplement suivre la documentation fournie.
Il y a plusieurs façons d’installer ces deux modules.


De notre côté, c’est en utilisant « Composer » (Gestionnaire des dépendences pour PHP) que ça a fonctionné.

Petite aide d’installation (Non-exaustive) :

Installation de Composer :
  # apt-get install composer
Installation de "php_codesniffer" avec composer :
  # composer global require "squizlabs/php_codesniffer=*"
Télécharger dernière version de "PHPCompatibility" depuis le github, puis l'extraire :
  # wget
  # tar xvf
Ajouter le chemin du répertoire de "PHPCompatibility" dans la config de "PHP CodeSniffer" :
  # ~/.composer/vendor/bin/phpcs --config-set installed_paths
Vérifier que la configuration a bien été ajoutée :
  # ~/.composer/vendor/bin/phpcs -i
Resultat : The installed coding standards are PSR2, PSR12, Squiz, MySource, PEAR, Zend, PSR1 and PHPCompatibility
Lancer la vérification d'un répertoire contenant des fichiers PHP, pour la version PHP8.0 :
  # ~/.composer/vendor/bin/phpcs --standard=PHPCompatibility -p /répertoire/à/analyser/ --runtime-set testVersion 8.0-

Après analyse du répertoire, des messages signalent les différentes erreurs trouvées selon version de PHP.

Installation de PHP8.0 sous Debian (Buster) :

Actuellement, la version 8.0 de PHP n’est pas disponible dans les dépôts de Debian 10 (Buster).
Il faut alors ajouter manuellement le dépôt où est publié PHP directement par les développeurs : plus d’infos à https://deb.sury.org.

Pour ajouter le dépôt « sury.org », il faut exécuter les lignes de commandes suivantes :

# sudo apt install -y lsb-release apt-transport-https ca-certificates wget
# sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
# sudo echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" |tee /etc/apt/sources.list.d/php.list
# sudo apt-get update

Si une erreur apparait lors de l’ajout, consulter le fichier README sur https://packages.sury.org/php/README.txt

Ensuite pour installer PHP8.0 sous Debian, effectuer les commandes suivantes :

# sudo apt-get install php8.0
La plupart du temps, des extensions de PHP sont nécessaires : adapter la commande suivante selon vos besoins :
# sudo apt-get install -y php8.0-{curl,mysql,xml}
Une fois la nouvelle version de PHP installée, vérifier la version active :
# php -v

A savoir :

  • Il est possible d’avoir plusieurs versions de PHP installées et choisir la version à utiliser par défaut. Avec la commande :
    • # update-alternatives –config php
  • Ne pas oublier de remettre la même configuration, si le fichier « /etc/php//apache2/php.ini » avait été modifié