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

InfoOn 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

8 commentaires

nexus6 · 18 octobre 2020 à 15 h 35 min

Merci ! Cette procédure est parfaite pour mettre à jour Owncloud en 10.5 avec PHP 7.2

Stéphane · 23 décembre 2020 à 10 h 17 min

Bonjour,

J’ai appliqué les commandes à la lettre mais j’ai un soucis de version:
Mon phpinfo() me donne toujours 5.4.16 mais la commande php -v m’indique 7.2…
Une idée? Merci.

    Stéphane · 23 décembre 2020 à 10 h 26 min

    C’est ok j’ai trouvé merci ^^

    kikinovak · 23 décembre 2020 à 11 h 14 min

    PHP 7.2 est mort. Faut passer à PHP 7.3 en suivant ce tuto et en remplaçant 7.2 par 7.3.

Nicolas · 19 janvier 2022 à 17 h 12 min

Bonjour,

J’essaie de mettre php 7.3 vers 7.4 en utilisant le dépôt remi mais lorsque j’utilise php -v le message suivant apparait :
-bash: /opt/rh/rh-php73/root/usr/bin/php: Aucun fichier ou dossier de ce type

le dossier ne semble pas le même avec le dépôt remi
/opt/remi/php74/root/usr/bin/

comment corriger cela svp ?

je vous remercie

    kikinovak · 19 janvier 2022 à 17 h 25 min

    Non, ce n’est pas du tout la même approche.

      Nicolas · 20 janvier 2022 à 8 h 41 min

      Pouvez-vous m’aiguiller svp ?

      PHP 7.4 fonctionne mais php -v renvoie toujours le même message
      -bash: /opt/rh/rh-php73/root/usr/bin/php: Aucun fichier ou dossier de ce type

        kikinovak · 20 janvier 2022 à 16 h 31 min

        Les paquets PHP de votre dépôt tiers rangent les exécutables ailleurs que dans l’arborescence /opt.

Les commentaires sont fermés.