CentOS 6 wird per default mit der PHP-Version 5.3.3 ausgeliefert. CentOS 7 bereits mit der PHP-Version 5.4.16. Die systemweite PHP-Version von CentOS zu ändern ist möglich, bringt aber vor allem bei der gleichzeitigen Verwendung vom Plesk zahlreiche Probleme.
Eine weitaus besser Variante ist es weitere aktuellere PHP-Versionen zusätzlich bereitzustellen. Das Tutorial zeigt wie bei CentOS 6 bzw CentOS 7 jeweils die PHP-Versionen PHP 5.4 und PHP 5.5 zusätzlich bereitgestellt werden.
Installation multipler PHP-Versionen unter CentOS
Wir installieren die optionalen PHP-Versionen aus den Red Hat Software Collections (SCLs). Dazu binden wir zunächst die nötigen Repositorys ein. Für jede zusätzlich PHP-Version sowie CentOS-Version gibt es ein eigenes Repository. Nach dem Einbinden des Repository können wir die einzelnen aktuelleren PHP-Versionen installieren. Das funktioniert wie folgt.
PHP-Versionen (PHP 5.4 / PHP 5.5) unter für CentOS 6
Installation des Software Collections Repository für PHP 5.5:
yum install https://www.softwarecollections.org/en/scls/rhscl/php55/epel-6-x86_64/download/rhscl-php55-epel-6-x86_64.noarch.rpm yum install https://www.softwarecollections.org/en/scls/remi/php55more/epel-6-x86_64/download/remi-php55more-epel-6-x86_64.noarch.rpm
Installation von PHP 5.5:
yum install scl-utils php55 php55-php-mysqlnd php55-php-pdo php55-php-mcrypt php55-php-gd php55-php-mbstring php55-php-xml php55-php-pear php55-php-soap
Installation des Software Collections Repository für PHP 5.4:
yum install https://www.softwarecollections.org/en/scls/rhscl/php54/epel-6-x86_64/download/rhscl-php54-epel-6-x86_64.noarch.rpm yum install https://www.softwarecollections.org/en/scls/remi/php54more/epel-6-x86_64/download/remi-php54more-epel-6-x86_64.noarch.rpm
Installation von PHP 5.4:
yum install scl-utils php54 php54-php-mysqlnd php54-php-pdo php54-php-mcrypt php54-php-gd php54-php-mbstring php54-php-xml php54-php-pear php54-php-soap
PHP-Versionen (PHP 5.5) unter für CentOS 7
Installation des Software Collections Repository für PHP 5.5:
yum install https://www.softwarecollections.org/en/scls/rhscl/php55/epel-7-x86_64/download/rhscl-php55-epel-7-x86_64.noarch.rpm yum install https://www.softwarecollections.org/en/scls/remi/php55more/epel-7-x86_64/download/remi-php55more-epel-7-x86_64.noarch.rpm
Installation von PHP 5.5:
yum install scl-utils php55 php55-php-mysqlnd php55-php-pdo php55-php-mcrypt php55-php-gd php55-php-mbstring php55-php-xml php55-php-pear php55-php-soap
Die Binarys der optionalen PHP-Versionen liegen nun unter /opt/rh/php54 bzw. /opt/rh/php54. Um diese nun im Plesk verfügbar und auswählbar zu machen müssen wir neue PHP-Handler definieren.
Zusätzliche PHP-Versionen im Plesk bereitstellen
Zuerst schauen wir ob bereits Handler definiert sind.
/usr/local/psa/bin/php_handler --list id: display name: full version: version: type: cgi-bin: php-cli: php.ini: custom: module 5.3.3 5.3.3 5.3 module /usr/bin/php-cgi /etc/php.ini false fastcgi 5.3.3 5.3.3 5.3 fastcgi /usr/bin/php-cgi /etc/php.ini false cgi 5.3.3 5.3.3 5.3 cgi /usr/bin/php-cgi /etc/php.ini false
Dann fügen wir je nach PHP-Version die entsprechenen neuen PHP-Handler hinzu.
#PHP 5.4 /usr/local/psa/bin/php_handler --add -displayname 5.4 -path /opt/rh/php54/root/bin/php-cgi -phpini /opt/rh/php54/root/etc/php.ini -type cgi -id 5.4-cgi /usr/local/psa/bin/php_handler --add -displayname 5.4 -path /opt/rh/php54/root/bin/php-cgi -phpini /opt/rh/php54/root/etc/php.ini -type fastcgi -id 5.4-fastcgi
#PHP 5.5 /usr/local/psa/bin/php_handler --add -displayname 5.5 -path /opt/rh/php55/root/bin/php-cgi -phpini /opt/rh/php55/root/etc/php.ini -type cgi -id 5.5-cgi /usr/local/psa/bin/php_handler --add -displayname 5.5 -path /opt/rh/php55/root/bin/php-cgi -phpini /opt/rh/php55/root/etc/php.ini -type fastcgi -id 5.5-fastcgi
Anschliessend können wir nochmals die PHP-Handler überprüfen.
/usr/local/psa/bin/php_handler --list id: display name: full version: version: type: cgi-bin: php-cli: php.ini: custom: module 5.3.3 5.3.3 5.3 module /usr/bin/php-cgi /etc/php.ini false fastcgi 5.3.3 5.3.3 5.3 fastcgi /usr/bin/php-cgi /etc/php.ini false cgi 5.3.3 5.3.3 5.3 cgi /usr/bin/php-cgi /etc/php.ini false 5.4-cgi 5.4 5.4.16 5.4 cgi /opt/rh/php54/root/bin/php-cgi /opt/rh/php54/root/etc/php.ini true 5.4-fastcgi 5.4 5.4.16 5.4 fastcgi /opt/rh/php54/root/bin/php-cgi /opt/rh/php54/root/etc/php.ini true 5.5-cgi 5.5 5.5.6 5.5 cgi /opt/rh/php55/root/bin/php-cgi /opt/rh/php55/root/etc/php.ini true 5.5-fastcgi 5.5 5.5.6 5.5 fastcgi /opt/rh/php55/root/bin/php-cgi /opt/rh/php55/root/etc/php.ini true
Die Handler mit dem Typ custom=true haben wir selbst definiert. Diese stehen uns nun im Plesk unter den Punkt Hostingeinstellung der jeweiligen Domain zur Verfügung.
Weitere PHP-Pakete können ganz einfach mit yum installiert werden. Falls ein Paket nicht auffindbar ist kann dieses auch mit PECL installiert werden. Das passende Binary zum Aufrufen von PECL liegt unter /opt/rh/php<Version>/root/bin.
Fazit
Die Installation der PHP-Versionen aus den Software Collections (SCLs) ist eine einfache und unkomplizierte Variante unter CentOS zusätzliche PHP-Versionen bereitzustellen. Im Gegensatz zum globalen ersetzen der PHP-Version kann dies auch bei installierten Plesk erfolgen und verursacht keine Probleme mit diversen Abhängigkeiten. Außerdem haben wir die Möglichkeit zwischen den Versionen auszuwählen. Das Repository wird gepflegt und erhält regelmäßig Updates, ein weiter Vorteil gegenüber der selbst kompilierten Variante.
Es finden sich noch eine Vielzahl von weiten aktuellen Paketen in den Software Collections. Auch lohnt ein Blick in die Dokumentation von Parallels Plesk.
Update
Plesk stellt nun verschiedene PHP-Versionen unter anderem auch PHP 7 im Autoinstaller bereit. Eine Anleitung zu Installation findet ihr hier: Plesk PHP 7 “Out of the Box” installieren.
SUUUUUPER!! VIELEN HERZLICHEN DANK DAFÜR!
Best solution ever!
Why not in English?
Thank you so much.
Thanks for this blog article.
Will adding these repos _not_ break Plesk during auto update?
I think there is no problem. The packages are installed separately in /opt. It affects no Plesk core components.
Funktioniert super, aber wie kann ich einzelne Versionen wieder entfernen?
Hi,
Einfach mal /usr/local/psa/bin/php_handler aufrufen. Dort erhält man dann eine komplette Übersicht der möglichen Parameter
/usr/local/psa/bin/php_handler --remove -id handlerid
Auf der Seite der Plesk Command Line Utilities findest Du weitere Infos.
Ich hoffe ich konnte Dir helfen.
Perfekt! Und das Ganze mal auf deutsch! Danke
Eine Frage:
Bei der Ausgabe ‚php_handler –list‘ fehlt die Zeile „module“ für die neue Version. Müssen diese noch installiert werden?
Jan
Hallo Jan,
mit module ist mod_php für apache gemeint. Da wird immer das default von php-Version der Distribution genommen. Ist für Dich aber auch nicht relevant, da du ja hoffentlich Deine Webseiten unter fastcgi laufen lässt :D
Die php-module, falls Die noch welche fehlen, installierst Du ganz normal mit yum wie im Artikel beschrieben.
Bei mir ist nach der Installation von php5.5 keine php-cgi vorhanden.
Deshalb bricht php_handler –add ab. Was mache ich falsch?
Hallo,
das kann ich leider so nicht beurteilen :D
Auch wenn der Artikel schon ein wenig älter ist, hilft es vielleicht dem einen oder anderen noch weiter.
Ich hatte das selbe Problem und hatte dann festgestellt, das die binaries nicht unter /opt/rh/php55/root/bin lagen, sondern unter /opt/rh/php55/root/usr/bin
Mag sein, dass sich das inzwischen irgendwie geändert hat, aber danach konnte ich sie mit dem php_handler problemlos hinzufügen.
Viele Grüße und noch ein FROHES NEUES JAHR
Holger Schütz
Auf „Software Collections“ gibt’s nun auch ein php56… ich dachte mit Deinem guten Artikel würde ich auch den Transfer schaffen um mir auch das zu installieren.
Leider scheitere ich bein Einbinden der php-handler in Plesk, vielleicht kannst Du in Artikel auch um die Infos für php56 ergänzen?!
Danke.