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 de plus en plus 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.

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

Si l’on choisit cette deuxième option, il existe plusieurs façons de procéder. Je décris ici deux manières différentes pour installer PHP 7.1.

  1. Depuis les dépôts SCL (Software Collections)
  2. Depuis les dépôts Webtatic

Utiliser les dépôts SCL

Les dépôts SCL (Software Collections) fournissent des paquets plus récents pour certains composants du système, notamment PHP. L’avantage de ces dépôts, c’est qu’ils sont officiellement maintenus par l’équipe de CentOS.

Arrêter le serveur Apache.

$ sudo systemctl stop httpd

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

Si jamais la machine utilise déjà des paquets PHP plus récents 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.

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

Activer les dépôts SCL.

$ sudo yum install centos-release-scl

Rechercher les paquets disponibles pour PHP 7.1.

$ yum search rh-php71

Les paquets relatifs à PHP 7.1 sont tous nommés rh-php71*. Pour une installation d’OwnCloud, par exemple, on installera les paquets suivants.

  • rh-php71
  • rh-php71-php-mysqlnd
  • rh-php71-php-gd
  • rh-php71-php-mbstring
  • rh-php71-php-xml
  • rh-php71-php-process
  • rh-php71-php-mcrypt
  • rh-php71-php-intl
  • rh-php71-php-fpm

Le paquet rh-php71-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-php71-php-fpm
$ sudo systemctl start rh-php71-php-fpm

Éditer un fichier /etc/httpd/conf.d/php-fpm.conf comme ceci.

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-php71/root/usr/bin/php .

Créer un fichier /etc/opt/rh/rh-php71/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

Utiliser le dépôt Webtatic

Le dépôt Webtatic est un dépôt tiers spécialisé dans les paquets PHP récents pour Red Hat Enterprise Linux et CentOS. Il est maintenu par Andy Thompson, qui n’est aucunement affilié à CentOS.

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

Ouvrir la page d’accueil de Webtatic avec le navigateur Links.

$ links http://mirror.webtatic.com

Naviguer vers le répertoire yum/el7 et télécharger le fichier webtatic-release.rpm.

Quitter Links et installer le fichier téléchargé.

$ sudo yum localinstall webtatic-release.rpm

Le paquet installe trois nouveaux fichiers dans /etc/yum.repos.d.

  • webtatic-archive.repo
  • webtatic.repo
  • webtatic-testing.repo

Éditer /etc/yum.repos.d/webtatic.repo en définissant les mêmes priorités que pour le dépôt EPEL.

[webtatic]
name=Webtatic Repository EL7 - $basearch
#baseurl=https://repo.webtatic.com/yum/el7/$basearch/
mirrorlist=https://mirror.webtatic.com/yum/el7/$basearch/mirrorlist
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-webtatic-el7

Les paquets relatifs à PHP 7.1 sont tous nommés php71w-*. Pour une installation d’OwnCloud, on installera les paquets suivants.

  • mod_php71w
  • php71w-mysql
  • php71w-gd
  • php71w-mbstring
  • php71w-xml
  • php71w-process
  • php71w-mcrypt
  • php71w-intl

Documentation

Remerciements

Un grand merci à Fabian Arrotin de l’équipe CentOS pour m’avoir indiqué la bonne manière de faire.


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.

 


5 commentaires

Christophe · 5 juillet 2019 à 17 h 50 min

Bonjour Nicolas,

Le paquet « rh-php71-php-mcrypt » ne peut être installé (ou bien je n’ai pas trouvé la méthode).
Il est pourtant disponible :
[root@centos7-lamp-fresh ~]# yum search all php71 | grep crypt
sclo-php71-php-mcrypt.x86_64 : Standard PHP module provides mcrypt library

Erreur : Paquet : sclo-php71-php-mcrypt-7.1.11-1.el7.x86_64 (centos-sclo-sclo)
Requiert : libmcrypt.so.4()(64bit)

Cependant, cela dépasse mes compétences et je ne sais s’il faut-il tenir compte de ce qui est rédigé dans cet article qui suggère d’utiliser la fonction de chiffrage de « openssl » : https://stackoverflow.com/questions/41272257/mcrypt-is-deprecated-what-is-the-alternative

Par ailleurs, il s’agit bien de hasher les mots de passe ?
Quel serait votre point de vue sur le sujet svp ?


Christophe

    kikinovak · 6 juillet 2019 à 12 h 39 min

    Hmmm. Il doit y avoir un souci quelque part dans votre configuration, mais je ne vois pas lequel.

    [microlinux@sd-48011:~] $ rpm -qa | grep mcrypt
    libmcrypt-2.5.8-13.el7.x86_64
    sclo-php71-php-mcrypt-7.1.11-1.el7.x86_64
    

      Christophe · 6 juillet 2019 à 17 h 50 min

      Merci pour la réponse.
      La commande ne renvoi rien, j’ai utilisé le dépôt scl, je fais machine arrière et je tente un essai avec le dépôt « webtatic » (machine virtuelle de test)

        Christophe · 6 juillet 2019 à 18 h 29 min

        Avec le dépôt webtatic, il est disponible :
        libmcrypt-2.5.8-13.el7.x86_64
        php71w-mcrypt-7.1.30-1.w7.x86_64

        Si on cherche ici : https://centos.pkgs.org/7/epel-x86_64/libmcrypt-2.5.8-13.el7.x86_64.rpm.html, il est disponible mais introuvable par yum sur mon système (problème de dépôt non-configurés ? c’est install toute fraîche donc rien d’exotique)

        Mais cela ne répond pas à la question sur l’obsolescence du paquet qui n’est plus maintenu…

Installer PHP 7.1 sous CentOS - My Tiny Tools · 15 mars 2019 à 17 h 55 min

[…] (Source: Journal du hacker) […]

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.