PHPRed Hat Enterprise Linux et CentOS fournissent une version très ancienne de PHP. La version 5.4 n’est plus officiellement supportée, mais les ingénieurs de chez Red Hat prendront soin de rétroporter les corrections de failles de sécurité jusqu’en juin 2024. Le hic, c’est que bon nombre d’applications web – comme par exemple OwnCloud ou Nextcloud – dépendent de versions plus récentes de PHP. On se retrouve donc confronté à un dilemme en termes de choix de versions.

  • Soit l’on conserve PHP 5.4 et l’on opte pour une version obsolète de l’application.
  • Soit on met à jour PHP en perdant le bénéfice du support à long terme.

Si l’on choisit cette deuxième option, on a le choix entre différents dépôts de paquets tiers.

L’avantage des dépôts SCL, c’est qu’ils sont officiellement maintenus par Red Hat. Je vais donc suivre les préconisations de l’équipe de CentOS et utiliser ce dépôt.

Arrêter le serveur Apache.

$ sudo systemctl stop httpd

Si l’on utilise déjà PHP 7.1 en provenance des dépôts SCL, on arrêtera également le service php-fpm correspondant.

$ sudo systemctl stop rh-php71-php-fpm

Dans un premier temps, purger tous les paquets PHP 5.4.

$ rpm -qa | grep php
php-5.4.16-46.el7.x86_64
php-cli-5.4.16-46.el7.x86_64
php-pdo-5.4.16-46.el7.x86_64
php-common-5.4.16-46.el7.x86_64
php-mysql-5.4.16-46.el7.x86_64
$ sudo yum remove php-common

Pour une mise à jour de PHP 7.1 depuis les dépôts SCL, on supprimera les anciens paquets comme ceci.

$ sudo yum remove rh-php71-php-common rh-php71-runtime

Il faudra éventuellement supprimer manuellement le lien symbolique /usr/bin/php qui pointe vers /opt/rh/rh-php71/root/usr/bin/php.

$ sudo rm /usr/bin/php

Et si jamais la machine utilise des paquets PHP en provenance du dépôt Webtatic, on les supprimera comme ceci.

$ sudo yum remove php71w-common mod_php71w

Dans ce cas, c’est une bonne idée de désactiver le dépôt correspondant.

$ sudo yum remove webtatic-release
$ sudo rm -f /etc/yum.repos.d/webtatic.repo.rpmsave

Activer les dépôts SCL si ce n’est pas déjà fait.

$ sudo yum install centos-release-scl

Rechercher les paquets disponibles pour PHP 7.2.

$ yum search rh-php72

Les paquets relatifs à PHP 7.2 sont (presque) tous nommés rh-php72*. Pour une installation d’OwnCloud, par exemple, on installera les paquets suivants.

  • rh-php72
  • rh-php72-php-mysqlnd
  • rh-php72-php-gd
  • rh-php72-php-mbstring
  • rh-php72-php-intl
  • rh-php72-php-fpm

On notera que le module rh-php71-php-mcrypt de la version 7.1 de PHP n’a plus d’équivalent dans la version 7.2. Il est officiellement considéré comme obsolète.

Le paquet rh-php72-php-fpm « remplace » mod_php, si l’on peut dire. PHP-FPM est bien moins gourmand que mod_php en termes de consommation de mémoire. En contrepartie, nous devons « lier » Apache et PHP-FPM.

$ sudo systemctl enable rh-php72-php-fpm
$ sudo systemctl start rh-php72-php-fpm

Éditer un fichier /etc/httpd/conf.d/php-fpm.conf comme ceci, si ce n’est pas déjà fait.

AddType text/html .php
DirectoryIndex index.php
<FilesMatch \.php$>
  SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

Créer un lien symbolique /usr/bin/php, qui sera utilisé par des outils comme occ (OwnCloud) ou wp (WordPress).

$ cd /usr/bin/
$ sudo ln -s /opt/rh/rh-php72/root/usr/bin/php .

Créer un fichier /etc/opt/rh/rh-php72/php.d/20-date.ini pour renseigner correctement le fuseau horaire.

[Date]
; Defines the default timezone used by the date functions
; ; http://php.net/date.timezone
date.timezone = Europe/Paris

Pour finir, redémarrer Apache pour prendre en compte les modifications.

$ sudo systemctl start httpd

La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 

Catégories : Serveur

0 commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *