Zusätzliche PHP-Versionen mit CentOS

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.

REMI-Repository hinzufügen

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
[...]

PHP installieren

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
    

PHP registrieren

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'
  }
} )

Test

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.

PHP-Erweiterungen installieren

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.

Standard-PHP-Version ändern

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.

Alte PHP-Versionen entfernen

Um veraltete PHP-Versionen zu löschen gehen Sie am besten so vor:

  1. 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.

  2. 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
    
  3. 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.

  4. 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