1. Installation

L'image ISO est disponible pour tous, voir le fichier README.

N'oubliez pas d'activer les dépôts beta

# dnf repolist
repo id                               repo name                                                     status
rhel-8-for-x86_64-appstream-beta-rpms Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs) 4594
rhel-8-for-x86_64-baseos-beta-rpms    Red Hat Enterprise Linux 8 for x86_64 - BaseOS Beta (RPMs)    1686

2. Installation de PHP

PHP ne fait pas partie de BaseOS qui constitue le système de base, réduit au maximum, mais est disponible dans AppStream, c'est à dire en module.

# dnf module list
Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs)
php                  7.1          devel, minimal, defaul PHP scripting language                           
                                  t [d]                 
php                  7.2 [d]      devel, minimal, defaul PHP scripting language                           
                                  t [d]                  

On observe que les version 7.1 et 7.2 (défaut) sont disponible

Installation de la version 7.1

# dnf module install php:7.1
Dependencies resolved.
==========================================================================================================
 Package            Arch     Version                        Repository                               Size
==========================================================================================================
Installing group/module packages:
 php-cli            x86_64   7.1.20-2.el8+1700+11d526eb     rhel-8-for-x86_64-appstream-beta-rpms   2.9 M
 php-common         x86_64   7.1.20-2.el8+1700+11d526eb     rhel-8-for-x86_64-appstream-beta-rpms   624 k
 php-fpm            x86_64   7.1.20-2.el8+1700+11d526eb     rhel-8-for-x86_64-appstream-beta-rpms   1.5 M
 php-json           x86_64   7.1.20-2.el8+1700+11d526eb     rhel-8-for-x86_64-appstream-beta-rpms    70 k
 php-mbstring       x86_64   7.1.20-2.el8+1700+11d526eb     rhel-8-for-x86_64-appstream-beta-rpms   547 k
 php-xml            x86_64   7.1.20-2.el8+1700+11d526eb     rhel-8-for-x86_64-appstream-beta-rpms   187 k
Installing dependencies:
 httpd-filesystem   noarch   2.4.35-6.el8+2089+57a79027     rhel-8-for-x86_64-appstream-beta-rpms    32 k
 nginx-filesystem   noarch   1:1.14.0-3.el8+1631+ba902cf0   rhel-8-for-x86_64-appstream-beta-rpms    23 k
Installing module profiles:
 php/default                                                                                             
Enabling module streams:
 httpd                       2.4                                                                         
 nginx                       1.14                                                                        
 php                         7.1                                                                         

Transaction Summary
==========================================================================================================
Install  8 Packages

Total download size: 5.9 M
Installed size: 20 M
Is this ok [y/N]: y

On obtient :

# php -v
PHP 7.1.20 (cli) (built: Jul 19 2018 06:17:27) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

On peut aussi passer facilement en 7.2 :

# dnf module install php:7.2
Dependencies resolved.
==========================================================================================================
 Package         Arch      Version                         Repository                                Size
==========================================================================================================
Upgrading:
 php-cli         x86_64    7.2.11-1.el8+2002+9409c40c      rhel-8-for-x86_64-appstream-beta-rpms    3.1 M
 php-common      x86_64    7.2.11-1.el8+2002+9409c40c      rhel-8-for-x86_64-appstream-beta-rpms    653 k
 php-fpm         x86_64    7.2.11-1.el8+2002+9409c40c      rhel-8-for-x86_64-appstream-beta-rpms    1.6 M
 php-json        x86_64    7.2.11-1.el8+2002+9409c40c      rhel-8-for-x86_64-appstream-beta-rpms     73 k
 php-mbstring    x86_64    7.2.11-1.el8+2002+9409c40c      rhel-8-for-x86_64-appstream-beta-rpms    580 k
 php-xml         x86_64    7.2.11-1.el8+2002+9409c40c      rhel-8-for-x86_64-appstream-beta-rpms    188 k
Switching module streams:
 php                       7.1 -> 7.2                                                                    

Transaction Summary
==========================================================================================================
Upgrade  6 Packages

Total download size: 6.2 M
Is this ok [y/N]: y

Et on obtient :

# php -v
PHP 7.2.11 (cli) (built: Oct  9 2018 15:09:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

3. Utilisation en Web

3.1 avec Apache HTTP Server

Installation :

# dnf module install httpd

Activation des services :

# systemctl enable --now php-fpm
# systemctl enable --now httpd

Page de tests :

# echo '<?php phpinfo();' >/var/www/html/info.php

Et dans le navigateur http://localhost/info.php

3.2 avec nginx

Installation :

# dnf module install nginx

Activation des services :

# systemctl enable --now php-fpm
# systemctl enable --now nginx

Page de tests :

# echo '<?php phpinfo();' >/usr/share/nginx/html/info.php

Et dans le navigateur http://localhost/info.php

4. Conclusion

Les utilisateurs de Fedora ne seront pas surpris, car les travaux sur les paquets PHP réalisés depuis F19 bénéficient maintenant aux utilisateurs de RHEL :

  • php-fpm utiliser par défaut
  • httpd par défaut en MPM event, et php fonctionnant sans modification de configuration
  • nginx disponible, et php fonctionnant sans modification de configuration

L'utilisation des modules devraient aussi améliorer le simplicité d'utilisation et la flexibilité du choix des versions utilisées, et évidement on s'attend à avoir de nouvelles versions plus rapidement (e.g. php 7.3).

Certains (comme moi) regretteront l'abandon des SCL, et donc la possibilité d'installer plusieurs versions en parallèle (qui reste possible en utilisant les conteneurs).