de:multiphp

mehrere PHP-Versionen verwenden

Inhalt

Beginnend mit Version v1.7.4 unterstützt LiveConfig die Umschaltung zwischen verschiedenen PHP-Versionen pro Domain, wenn entsprechend mehrere PHP-Interpreter auf dem Server vorhanden sind.

Dieses Dokument beschreibt, wie Sie die zusätzlichen PHP-Interpreter in LiveConfig registrieren können.

Voraussetzungen

Voraussetzung ist, dass Sie die zusätzlichen PHP-Versionen bereits auf dem Server installiert haben. Idealerweise sollten diese jeweils in einem separaten Verzeichnisbaum installiert sein (z.B. /opt/php/php-5.5.14, /opt/php/php-5.6.0rc2 etc.). In der Regel müssen Sie PHP hierfür selbst compilieren - verwenden Sie dann das configure-Flag --prefix (z.B. --prefix=/opt/php/php-5.6.0rc2). Zudem ist wichtig, dass Sie PHP mit FastCGI-Unterstützung compilieren (PHP < 5.3: --enable-fastcgi).

Es genügt übrigens, die CGI- und optional die CLI-Varianten zu compilieren - ein Apache-Modul (--with-apxs2=…) benötigen Sie nicht, da verschiedene PHP-Versionen nur als (Fast)CGI-Programm parallel genutzt werden können.

Am Ende sollten Sie ein Programm namens php-cgi im jeweiligen Zielverzeichnis haben (z.B. /opt/php/php-5.5.14/bin/php-cgi).

Repositories für zusätzliche PHP-Versionen

Für einige Distributionen stellen wir fertig vorcompilierte Pakete bereit:

Distribution Plattform Version Datei Erweiterungen
Debian 7 (Wheezy) AMD64 5.3.29 php-5.3-opt_5.3.29-1+wheezy17_amd64.deb Suhosin 0.9.36
5.5.38 php-5.5-opt_5.5.38-1+wheezy1_amd64.deb Suhosin 0.9.38
5.6.31 php-5.6-opt_5.6.31-1+wheezy1_amd64.deb Suhosin 0.9.38
APCu 4.0.11
ImageMagick 3.4.3RC2
LDAP
Tidy
7.0.21 php-7.0-opt_7.0.21-1+wheezy1_amd64.deb APCu 5.1.8
ImageMagick 3.4.3RC2
LDAP
Tidy
7.1.7 php-7.1-opt_7.1.7-2+wheezy1_amd64.deb APCu 5.1.8
ImageMagick 3.4.3RC2
LDAP
Tidy
Debian 8 (Jessie) AMD64 5.3.29 php-5.3-opt_5.3.29-1+jessie2_amd64.deb Suhosin 0.9.37.1
5.4.45 php-5.4-opt_5.4.45-1+jessie1_amd64.deb Suhosin 0.9.38
APCu 4.0.11
ZendOpcache 7.0.5
5.5.38 php-5.5-opt_5.5.38-1+jessie1_amd64.deb Suhosin 0.9.38
5.6.31 php-5.6-opt_5.6.31-1+jessie1_amd64.deb Suhosin 0.9.38
APCu 4.0.11
ImageMagick 3.4.3RC2
LDAP
Tidy
7.0.21 php-7.0-opt_7.0.21-1+jessie1_amd64.deb APCu 5.1.8
ImageMagick 3.4.3RC2
LDAP
Tidy
7.1.7 php-7.1-opt_7.1.7-2+jessie1_amd64.deb APCu 5.1.8
ImageMagick 3.4.3RC2
LDAP
Tidy
Debian 9 (Stretch) AMD64 4.4.9 php-4.4-opt_4.4.9-2+stretch1_amd64.deb Suhosin 0.9.37.1
5.3.29 php-5.3-opt_5.3.29-4+stretch1_amd64.deb Suhosin 0.9.37.1
5.4.45 php-5.4-opt_5.4.45-3+stretch1_amd64.deb Suhosin 0.9.38
APCu 4.0.11
5.5.38 php-5.5-opt_5.5.38-5+stretch1_amd64.deb Suhosin 0.9.38
APCu 4.0.11
ImageMagick 3.4.3
5.6.31 php-5.6-opt_5.6.31-1+stretch1_amd64.deb Suhosin 0.9.38
APCu 4.0.11
ImageMagick 3.4.3
LDAP
Tidy
7.0.21 php-7.0-opt_7.0.21-1+stretch1_amd64.deb APCu 5.1.8
ImageMagick 3.4.3
LDAP
Tidy
7.1.7 php-7.1-opt_7.1.7-2+stretch1_amd64.deb APCu 5.1.8
ImageMagick 3.4.3
LDAP
Tidy

Diese Pakete werden in /opt/ installiert und sind somit sauber vom restlichen System getrennt. Um das Debian-Repository einzubinden, fügen Sie folgende Zeile in /etc/apt/sources.list.d/liveconfig.list hinzu:

liveconfig.list
deb http://repo.liveconfig.com/debian/ jessie php

Wenn Sie nicht Debian 8 verwenden, ersetzen Sie „jessie“ durch den Namen Ihrer jeweiligen Version (Debian 7: „wheezy“).

PHP-Version in LiveConfig registrieren

Die Registrierung in LiveConfig erfolgt über die Datei custom.lua. Falls noch nicht vorhanden, legen Sie diese bitte im Verzeichnis /usr/lib/liveconfig/lua/ an. Dort registrieren Sie jede zusätzliche PHP-Version über die Funktion LC.web.addPHP(), wobei Sie als Parameter lediglich ein individuelles Suffix für den Apache-Handler sowie den vollständigen Namen der jeweiligen php-cgi-Binary angeben:

LC.web.addPHP("php55", "/opt/php-5.5/bin/php-cgi")
LC.web.addPHP("php56", "/opt/php-5.6/bin/php-cgi")

Ob alles klappt, können Sie mit dem Befehl liveconfig --diag testen - dort sollten dann die erkannten PHP-Versionen mit aufgeführt werden:

root@www:~# liveconfig --diag
Running OS diagnostics...
[...]
Checking for web server software:
 - Found 'apache' web server
   Version: '2.2.16'
   Package version: '2.2.16-6+squeeze12'
   SNI support: yes
   Modules: core log_config logio mpm_prefork http so actions alias auth_basic authn_file authz_default authz_groupfile authz_host authz_user autoindex cgi deflate dir env fcgid include mime negotiation php5 reqtimeout rewrite setenvif ssl suexec suphp
 - PHP 5.5.9 (code='php55', bin='/opt/php-5.5.9/bin/php-cgi')
   default php.ini: '(null)'
 - PHP 5.3.3 (code='php5', bin='/usr/bin/php-cgi')
   default php.ini: '/etc/php5/cgi/php.ini'
[...]

suPHP

Um die zusätzlichen PHP-Versionen auch mit suPHP nutzen zu können, müssen Sie die PHP-Binaries auch noch im Abschnitt [handlers] der suPHP-Konfigurationsdatei (meist /etc/suphp/suphp.conf) auflisten. Geben Sie als Handler jeweils application/x-httpd- + Suffix an - im o.g. Beispiel also:

suphp.conf
[...]
[handlers]
;Handler for php-scripts
[...]
application/x-httpd-php55="php:/opt/php-5.5/bin/php-cgi"
application/x-httpd-php56="php:/opt/php-5.6/bin/php-cgi"
[...]

Abschließend müssen Sie Apache noch neu starten, damit die geänderte suPHP-Konfiguration eingelesen wird.

FastCGI

Für die Verwendung mit FastCGI sind keine weiteren Einstellungen notwendig.

PHP-Version umschalten

Nach einem Neustart von LiveConfig erscheint beim Bearbeiten von (Sub)Domain-Einstellungen automatisch eine Auswahlbox für die gewünschte PHP-Version.

Suhosin-Erweiterung nutzen

Wir statten die o.g. PHP-Pakete künftig mit der Suhosin-Erweiterung aus. Diese sorgt für etwas mehr Sicherheit im PHP-Interpreter und ermöglicht mit LiveConfig beispielsweise alle via PHP hochgeladenen Dateien erst durch einen Virenscanner zu prüfen.

Wenn suhosin in dem jeweiligen PHP-Paket verfügbar ist, dann existiert eine Datei namens /opt/php-#.#/etc/conf.d/suhosin.ini.disabled. Um Suhosin zu aktivieren, nennen Sie die Datei suhosin.ini.disabled einfach in suhosin.ini um.

de/multiphp.txt · Zuletzt geändert: 2017/07/11 16:25 von wikiadmin

Benutzer-Werkzeuge