Red 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.
- les dépôts SCL (Software Collections)
- les dépôts Webtatic
- les dépôts de Rémi Collet
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.
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.