Die PHP-Versionen auf CentOS 7 sind steinalt: während Stand 2017-12 mindestens PHP 7.2.0, 7.1.12, 7.0.26 und 5.6.30 (nur noch Security-Fixes) verfügbar sind, wird
- unter CentOS 6 / RHEL 6 PHP 5.3.3
- unter CentOS 7 / RHEL 7 PHP 5.4.16
aus den Standard-Repositories geliefert – beide seitens PHP End of Life und auch unter CentOS 7 für viele PHP-basierende Anwendungen inzwischen zu alt. Damit scheidet z.B. der Einsatz eines aktuellen PIWIK aus, was mindestens von einem PHP 5.5.19 ausgeht. Zum Vergleich: die letzte 5.5er-Version ist 5.5.38 und bereits seit Mitte 2016 End of Life.
Hier hilft nur der Einsatz eines separaten Repositories. Wir haben sehr gute Erfahrungen mit dem Remi-Repo gemacht. Hier sind keine Handstände erforderlich: ist erst einmal die gewünschte Basis-Version ausgewählt, lässt sich einfach mit yum install php
arbeiten. Ein weiterer Pluspunkt ist die Aktualität des Repos.
Bevor man eine neue PHP-Version installiert, sollte man eine vorhandene Konfiguration wegsichern und sich anschauen, welche PHP-Module installiert wurden:
cp --archive /etc/php.ini /etc/php.ini.bak
cp --archive --recursive /etc/php.d /etc/php.d.bak
yum list installed php*
yum remove php # plus list all other php-modules
So wird ein Upgrade auf eine aus dem Remi-Repo installierte PHP-Version durchgeführt, im Beispiel von 7.1 auf 7.2:
yum-config-manager --disable remi-php71
yum-config-manager --enable remi-php72
yum update
Installation von PHP 7.x
Im Beispiel wird PHP 7.4 installiert.
yum -y install
epel-release
http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum -y install yum-utils
# yum-config-manager --disable remi-php73
yum-config-manager --enable remi-php74
yum -y install php # plus list all other php-modules
Installation von PHP 5.6
yum -y install
epel-release
http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum -y install yum-utils
yum-config-manager --enable remi-php56
yum -y install php # plus list all other php-modules
Apache
Im Apache muss nun noch das richtige PHP-Modul geladen werden, also beispielsweise modules/libphp7.so
statt modules/libphp5.so
.