CentOS : Installer une autre version de PHP grâce à SCL
Table des matières
Les distributions Linux d'Entreprise, dont fait partie RedHat (et sa variante gratuite CentOS) ont pour but de durer dans le temps et d'être supportées sur du long terme. De fait, les versions de logiciels sont souvent arrêtées pour garantir une grande stabilité et compatibilité des applicatifs installés. Parfois, en 10 ans, les versions évoluent.
SCL pour l'anglais Software Collections est une collection de logiciels qui permet d'installer, en plus de la version livrée par le système, d'autre versions pour des besoins spécifiques.
Prenons exemple (qui sert de base à cette page) : CentOS6 est livrée avec PHP5.3. Or, le support est terminé. RedHat patch encore PHP 5.3 pour combler les failles de sécurité. Mais on peut installer en parallèle PHP 5.4.
Tout d'abord, on installe le support SCL :
Ensuite, nous avons à disposition tout ceci (Pour CentOS 6) :
Source : http://mirror.centos.org/centos/6/sclo/x86_64/rh/ - http://mirror.centos.org/centos/7/sclo/x86_64/rh/
Quand j'ai installé PHP 5.3, j'avais procédé ainsi :
Le PHPINFO donnait :
Et bien pour la collection php54, on ajoute le préfixe php54 à tous les paquets) :
Pour info :
On remarque qu'un fichier de config a été créé dans le dossier d'Apache :
Si on redémarre de suite apache, on a une erreur [warn] module php5_module is already loaded, skipping :
C'est tout simplement qu'on essaie de charger 2 modules PHP.
On peut ne plus charger le PHP 5.3 en désinstallant PHP 5.3 ou en renommant le fichier de config afin qu'il ne termine plus par conf :
On redémarre ensuite Apache et c'est OK :
Maintenant, le PHPINFO donne :
Et voilà
Introduction
Les distributions Linux d'Entreprise, dont fait partie RedHat (et sa variante gratuite CentOS) ont pour but de durer dans le temps et d'être supportées sur du long terme. De fait, les versions de logiciels sont souvent arrêtées pour garantir une grande stabilité et compatibilité des applicatifs installés. Parfois, en 10 ans, les versions évoluent.
SCL pour l'anglais Software Collections est une collection de logiciels qui permet d'installer, en plus de la version livrée par le système, d'autre versions pour des besoins spécifiques.
Prenons exemple (qui sert de base à cette page) : CentOS6 est livrée avec PHP5.3. Or, le support est terminé. RedHat patch encore PHP 5.3 pour combler les failles de sécurité. Mais on peut installer en parallèle PHP 5.4.
Initialiser SCL dans CentOS
Tout d'abord, on installe le support SCL :
Code BASH :
$ yum --enablerepo=extras install centos-release-scl
Code TEXT :
Installé: centos-release-scl.noarch 10:6-6.el6.centos Dépendance(s) installée(s) : centos-release-scl-rh.noarch 0:1-1.el6.centos
Ensuite, nous avons à disposition tout ceci (Pour CentOS 6) :
- httpd24 - Apache 2.4
- mariadb55 - MariaDB 5.5
- mysql55 - MySQL 5.5
- nodejs010 - Node.js 0.10
- perl516 - Perl 5.16.3
- php54 - PHP 5.4
- postgresql92 - PostgreSQL 9.2
- python27 - Python 2.7
- python33 - Python 3.3
- ruby193 - Ruby 1.9.3
- ....
Source : http://mirror.centos.org/centos/6/sclo/x86_64/rh/ - http://mirror.centos.org/centos/7/sclo/x86_64/rh/
Installation de PHP5.4 à côté de 5.3 du système
Quand j'ai installé PHP 5.3, j'avais procédé ainsi :
Code BASH :
yum install php php-mysql php-gd php-pdo
Le PHPINFO donnait :
Citation :
Apache Version Apache/2.2.15 (CentOS)
PHP Version 5.3.3
Loaded Configuration File /etc/php.ini
PHP Version 5.3.3
Loaded Configuration File /etc/php.ini
Et bien pour la collection php54, on ajoute le préfixe php54 à tous les paquets) :
Code BASH :
yum install php54-php php54-php-mysql php54-php-gd php54-php-pdo
Code TEXT :
Installé: php54-php.x86_64 0:5.4.40-3.el6 php54-php-gd.x86_64 0:5.4.40-3.el6 php54-php-mysqlnd.x86_64 0:5.4.40-3.el6 php54-php-pdo.x86_64 0:5.4.40-3.el6 Dépendance mise à jour: php54-php-cli.x86_64 0:5.4.40-3.el6 php54-php-common.x86_64 0:5.4.40-3.el6 php54-php-process.x86_64 0:5.4.40-3.el6 php54-php-xml.x86_64 0:5.4.40-3.el6
Pour info :
Code BASH :
php -v PHP 5.3.3 (cli) (built: Feb 9 2016 10:36:17) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
Code BASH :
/opt/rh/php54/root/usr/bin/php -v PHP 5.4.40 (cli) (built: Oct 5 2015 12:14:01) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
Configurer Apache avec le nouveau PHP
On remarque qu'un fichier de config a été créé dans le dossier d'Apache :
Code BASH :
ls /etc/httpd/conf.d/ php54-php.conf php.conf README welcome.conf
Si on redémarre de suite apache, on a une erreur [warn] module php5_module is already loaded, skipping :
Code BASH :
/etc/init.d/httpd restart Arrêt de httpd : [ OK ] Démarrage de httpd : [Thu Mar 24 16:46:33 2016] [warn] module php5_module is already loaded, skipping [ OK ]
C'est tout simplement qu'on essaie de charger 2 modules PHP.
On peut ne plus charger le PHP 5.3 en désinstallant PHP 5.3 ou en renommant le fichier de config afin qu'il ne termine plus par conf :
Code BASH :
mv /etc/httpd/conf.d/php.conf /etc/httpd/conf.d/php53.off
On redémarre ensuite Apache et c'est OK :
Code BASH :
/etc/init.d/httpd restart Arrêt de httpd : [ OK ] Démarrage de httpd :
Maintenant, le PHPINFO donne :
Citation :
Apache Version Apache/2.2.15 (CentOS)
PHP Version 5.4.40
Loaded Configuration File /opt/rh/php54/root/etc/php.ini
PHP Version 5.4.40
Loaded Configuration File /opt/rh/php54/root/etc/php.ini
Et voilà