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

Dans ce cas, 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.

 


3 commentaires

fero14041 · 23 septembre 2019 à 11 h 48 min

Bonjour Nicolas,

Je suis un peu étonné que vous ne mentionniez pas, comme autre dépôt, celui du projet IUS (http://ius.io/), qui propose de nombreux paquets proches de l’upstream, dont PHP 7.2. Le projet est référencé ici: https://wiki.centos.org/fr/AdditionalResources/Repositories/ , qui pointe vers des ressources relativement objectives comparant IUS et SCL…

    kikinovak · 23 septembre 2019 à 13 h 35 min

    Merci pour l’info. Eh bien, je ne connaissais pas, et je découvre. Différents chemins mènent à Saint-Bauzille-de-Putois, comme le dit le proverbe.

      fero14041 · 25 septembre 2019 à 10 h 55 min

      J’ai une vraie question relative aux paquets proposés par SCL: sont-ils régulièrement mis à jour en fonction des versions upstream, notamment en ce qui concerne la sécurité et la fiabilité? J’avais cru comprendre, mais détrompez-moi le cas échéant, que les versions pour CentOS étaient proposées « as is » à un instant donné, mais sans la garantie de suivi effectué par RedHat pour ses autres paquets — ce qui m’a fait préférer IUS pour les logiciels PHP et mariaDB notamment…

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.