Verschiedene PHP-Versionen mit Apache nutzen

phplogoMit dem Upgrade auf Debian 8 ‚Jessie‘ kommt auch ein relativ großer PHP-Versionssprung auf die Server: von 5.4 auf 5.6.

Obwohl PHP 5.6 viele Neuerungen und Verbesserungen bringt, gibt es Kunden, die nicht mal eben all ihre Scripte anpassen können. Genau aus diesem Grund möchte ich zeigen, wie man ohne großen Aufwand mehrere PHP-Versionen (z.b. PHP 5.4 und PHP 5.6) mit einem Apache-Webserver nutzt.

Die folgende Anleitung erfordert erweiterte Linux-Kenntnisse und sollte von Linux-Anfängern nicht durchgeführt werden! Für etwaige Schäden übernehme ich keine Haftung.

Zuallererst muss man die zweite PHP-Version installieren – Debian bietet im Jessi-Repository allerdings nur die oben genannte PHP-Version 5.6, die uns in diesem Fall nicht weiterhilft. Man könnte PHP 5.4 nun kompilieren – oder man nutzt den einfacheren Weg: Liveconfig bietet, eigentlich für sein Controlpanel gedacht, mehrere PHP-Versionen als Debian-Paket an und hat dafür sogar ein eigenes Repository aufgesetzt.

Wir fügen also folgende Zeile in unsere /etc/apt/sources.list ein:

und fügen die Signatur des Repositorys hinzu.

Nach einem gewohnten

ist die neue PHP-Version installiert und lauffähig. Hier muss natürlich die gewünschte PHP-Version eingesetzt werden, Liveconfig bietet aktuell (Stand: 23. August 2015) PHP 5.4, PHP 5.5, PHP 5.6 und PHP 7.0 – wobei letzteres noch ein Release Candidate ist.

Jetzt, da wir eine lauffähige PHP-Umgebung haben, müssen wir dem Apache noch beibringen, dass wir diese gerne nutzen möchten. Wir beginnen mit der Installation von FastCGI:

Nun zeigen wir dem Indianer, wo er sein PHP findet. Wir editieren die /etc/apache2/apache2.conf und fügen nach LogFormat

ein. Auch hier gilt: die Pfade sollten, je nach PHP-Version, entsprechend angepasst werden.

Nun legen wir die oben referenzierte Datei /var/www/cgi-bin/php-cgi-5.4 an:

Im letzten Schritt ändern wir die Virtual Hosts, die die „neue“ PHP-Version nutzen sollen. Hierzu öffnen wir die entsprechende Datei in /etc/apache2/sites-available/ und fügen folgenden Code in die entsprechende <VirtualHost>-Sektion ein:

Ein beherztes

und schon sollte der entsprechende Virtual Host die angegebene PHP-Version nutzen. Prüfen, welche Version der Host nutzt, kann man z.B. mit einer PHPinfo-Datei.

Mit dieser Anleitung kann man natürlich auch einen Blick auf das kommende PHP 7 riskieren und prüfen, ob seine eigenen Webseiten mit der neuen Version lauffähig sind.

Fragen? Gerne in die Kommentare!

Natürlich übernehme ich die Installation auch gerne für Sie – kontaktieren Sie mich einfach.

7 Gedanken zu “Verschiedene PHP-Versionen mit Apache nutzen

  1. Hallo, suuper-Anleitung! Die hat mir gerade extrem geholfen. Vielen Dank dafür!

    Eine Sache ist mir aufgefallen. Mein Apache hat über gemeckert. Mit ging es aber dann problemlos.

    Weiterhin habe ich gegoogelt und heraussgefunden, dass mir erst ein zusätzliches hinzufügen des folgenden Eintrags ebenfalls innerhalb der entsprechenden -Sektion das URL Rewriting per .htaccess unter der abweichenden PHP-Version wieder ermöglichte:

    AllowOverride All

    Und noch eine Frage, da ich das auf dem Server gerade nicht ausprobieren kann. Lassen sich mit der Anleitung auch mehrere zusätzliche PHP-Versionen installieren. Z.B. Serverstandard ist 5.6 und zusätzlich installiert werden 5.4, 5.5 und 7.0, welche dann in verschiedenen VirualHosts verwendet werden können?

    Viele Grüße
    Thomas

    • Hallo Thomas,

      freut mich, dass dir meine Anleitung geholfen hat!

      Die AllowOverride All-Geschichte stimmt natürlich, ich nutze sie relativ selten, da ich die .htaccess-Rules direkt in die Virtual Host-Konfiguration eintrage, um ein wenig Performance zu gewinnen.

      Natürlich kannst du auch mehrere PHP-Versionen nach dem gleichen Prinzip benutzen, hierzu einfach die zusätzlichen Pakete aus dem Repository installieren!

      Viele Grüße und schöne Festtage,
      Dominic

    • Hallo Martin,

      danke für das Kompliment!

      Die Module sind ja keine PHP-, sondern Apache-Module. Installieren kannst du sie wie gewohnt über die Debian-Paketverwaltung und aktivieren kannst du sie mit „a2enmod rewrite“.

      Grüße,
      Dominic

  2. Hallo,

    vielen Dank für die Anleitung. Ich brauche übergangsweise für zwei Websites, bzw. für eine Website und eine webbasierte Groupware noch php 5.4, aber für den Rest die „Standard-PHP 5.6“ vom Debian 8 und freue mich hierfür eine Lösung gefunden zu haben. Ganz hat es dann aber doch noch nicht geklappt:

    Durch die Zeile
    in der -Sektion erhalte ich ein

    Multiple arguments not (yet) supported.

    vom Apache 2.4 .

    Mir ist gerade nicht klar, ob ich etwas übersehen habe oder ob da ein Tippfehler vorliegt.

    Und ich bin kurz darüber gefallen, dass ich mit apache2-mpm-worker (vorher prefork) kein mod-php verwenden kann. Dies habe ich aber inzwischen mit php-fpm behoben, weil ich gerne für die anderen Websites Debian-Standard verwenden wollte.

    Vielen Dank und viele Grüße
    Tore

Schreibe einen Kommentar