Kategorie: CentOS
Erstellt: 23.10.2019
Aktualisiert: 20.08.2021
CentOS ist zwar für seine Stabilität und Zuverlässigkeit bekannt, aber auch dafür daß manche Softwarepakete etwas veraltet sind. CentOS 7 kommt mit PHP 5.4.16 - die 5.4er-Serie wird aber eigentlich seit September 2015 nicht mehr gepflegt. Viele Webanwendungen benötigen eine modernere PHP-Version wie etwa 7.2 oder neuer.
Dieser Artikel beschreibt die Installation zusätzlicher PHP-Versionen (parallel) und wie diese in LiveConfig registriert werden.
Wir empfehlen die Installation der fertigen PHP-Pakete aus dem REMI-Repository. Alternativ können Sie auch PHP selber compilieren oder aus einem anderen Repository installieren - in diesem Fall springen Sie bitte direkt zum Abschnitt PHP registrieren.
Prüfen Sie zuerst, ob Sie das REMI-Repository bereits aktiviert haben (yum repolist
). Falls nicht, fügen Sie dieses hinzu:
CentOS / Red Hat Enterprise Linux 6.x:
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6.rpm epel-release-latest-6.noarch.rpm
CentOS / Red Hat Enterprise Linux 7.x:
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
wget https://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh epel-release-latest-7.noarch.rpm remi-release-7.rpm
CentOS / Red Hat Enterprise Linux 8.x:
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
wget https://rpms.remirepo.net/enterprise/remi-release-8.rpm
rpm -Uvh epel-release-latest-8.noarch.rpm remi-release-8.rpm
Das REMI-Repository ist nicht automatisch aktiviert. Um dieses zu aktivieren, bearbeiten Sie die Datei /etc/yum.repos.d/remi.repo
. Suchen Sie die Zeile enabled=0
und ändern den Eintrag dort auf 1
:
[...]
enabled=1
[...]
Das LiveConfig-Repository stellt einige hilfreiche Pakete bereit, welche die gewünschten PHP-Versionen installieren und diese automatisch am LiveConfig registrieren:
PHP 7.3: CentOS/RHEL 6/7/8
yum install lc-php73-remi
PHP 7.4: CentOS/RHEL 7/8
yum install lc-php74-remi
PHP 8.0: CentOS/RHEL 7/8
yum install lc-php80-remi
PHP 8.1 (beta): CentOS/RHEL 7/8
yum install lc-php81-remi
Nur falls Sie PHP manuell oder aus einem anderen Repository installiert haben: erstellen Sie für jede zusätzliche PHP-Version eine zugehörige Lua-Datei im Verzeichnis /etc/liveconfig/lua.d/
. Für beispielsweise PHP 7.3 benennen Sie diese Datei php73.lua
.
-- zusaetzlichen PHP-Interpreter bei LiveConfig registrieren
LC.web.addPHP( {
['id'] = 'php73',
['cli'] = '/opt/php-7.3/bin/php',
['cgi'] = '/opt/php-7.3/bin/php-cgi',
['fpm'] = {
['bin'] = '/opt/php-7.3/sbin/php-fpm',
['start'] = 'service php73-fpm start',
['stop'] = 'service php73-fpm stop',
['reload'] = 'service php73-fpm reload',
['pool'] = '/etc/php-fpm/php73-fpm.d',
['sockets'] = '/var/run/php73-fpm'
}
} )
Führen Sie liveconfig --diag
aus (oder auf einem Client-System: lcclient --diag
) und prüfen Sie den PHP-Abschnitt der Ausgabe:
[root@centos#] liveconfig --diag
[...]
- PHP 7.3.16 (code='php73')
CGI/FastCGI: /opt/remi/php73/root/usr/bin/php-cgi
FPM: /opt/remi/php73/root/usr/sbin/php-fpm
pool config: /etc/opt/remi/php73/php-fpm.d
default php.ini: '/etc/opt/remi/php73/php.ini'
[...]
Nur falls Sie PHP manuell oder aus einem anderen Repository installiert haben: starten Sie schließlich LiveConfig neu (systemctl restart liveconfig
) um den/die neuen PHP-Interpreter zu aktivieren.
In den meisten Fällen möchten Sie auch gleich noch beliebte PHP-Erweiterungen mit installieren. Suchen Sie einfach nach verfügbaren Modulen, z.B. mit
yum search php73-
Einige häufig benötigte Module installieren Sie z.B. so:
yum install php73-php-gd php73-php-imap php73-php-intl php73-php-json php73-php-mbstring php73-php-mysqlnd php73-php-pdo php73-php-xml php73-php-pecl-apcu php73-php-pecl-imagick
Sie müssen ggf. die Versionsnummer abhängig von der tatsächlich installierten PHP-Version anpassen.
LiveConfig verwendet als “Standard-Version” die von der jeweiligen Linux-Distribution bereitgestellte PHP-Version.
Wenn Sie einen anderen PHP-Interpreter als Standard-Version nutzen möchten, legen Sie eine Datei /etc/liveconfig/lua.d/php-default.lua
an und tragen dort folgende Zeile ein:
-- PHP-Standardversion ändern:
LC.web.PHPDEFAULT = 'php73'
Statt php73
geben Sie den Code der gewünschten PHP-Version an (siehe Auflistung beim Aufruf von liveconfig --diag
).
Wenn Sie erneut liveconfig --diag
ausführen, sollte die gewählte Version entsprechend mit [DEFAULT]
markiert sein. Starten Sie LiveConfig anschließend neu, damit die Änderungen übernommen werden.
Um veraltete PHP-Versionen zu löschen gehen Sie am besten so vor:
Gehen Sie in LiveConfig auf Serververwaltung -> Web. In der Box PHP-Versionen sehen Sie die verfügbaren PHP-Versionen auf dem Server und von wie vielen Subdomains diese verwendet werden.
Um die Verwendung schrittweise abzuschalten, können Sie ab LiveConfig 2.11 die Eingeschränkt-Option setzen - die betroffene PHP-Version kann dann mit den bislang so konfigurierten Subdomains weiter genutzt, aber für neue Konfigurationen/Subdomains nicht mehr ausgewählt werden.
Wenn eine bestimmte PHP-Version dann letztendlich nicht mehr genutzt wird (Anzahl der Subdomains in Spalte Verwendung = 0), dann löschen Sie den entsprechenden PHP-Interpreter vom Server, z.B.:
yum erase php56
Prüfen Sie anschließend im LiveConfig, dass die eben gelöschte PHP-Version auch nicht mehr in der Liste der verfügbaren PHP-Versionen auftaucht. Alte bzw. nicht von LiveConfig bereitgestellte PHP-Pakete müssen ggf. manuell aus der custom.lua
entfernt werden, außerdem muss LiveConfig bzw. lcclient auf dem betroffenen Server eventuell neu gestartet werden.
Zuletzt können Sie noch die nicht mehr benötigten Konfigurationsdateien vom Server löschen, z.B.:
root@srv:~# cd /var/www
root@srv:/var/www# chattr -R -i web*/conf/php56
root@srv:/var/www# rm -rf web*/conf/php56