Apache: php4 und php5 parallel

Um den Umstieg von php4 auf php5 zu proben oder um für eine bestimmte Seite die neue Version von php zur Verfügung zu stellen, hilft ein Blick ein die folgende Anleitung.

Mit php 4.4.8 ist vermutlich die letzte Version von PHP4 erschienen. Der Support für diesen Versionszweig wurde somit auch mit Ablauf des Jahres 2007 eingestellt. Darum ist es sinnvoll auf die aktuelle Version zu aktualisieren, was jedoch auf einem Produktiv-Server nicht so einfach möglich ist, da eventuell Anhängigkeiten bestehen. Auf der Internetseite von PHP sind Tipps und eine FAQ bereitgestellt.

Üblicherweise läuft auf dem Server bereits php4 als Apache-Modul. Aufgrund der Anhängigkeiten von Debian ist es nicht möglich php5 als Zusatzmodul zu installieren, da sonst direkt php4 deinstalliert würde. Darum wird php5 mit den benötigten Zusatzmodulen als CGI-Modul (Wikipedia) eingerichtet:

apt-get install php5-cgi php5-gd php5-mcrypt php5-mhash php5-mysql php5-recode

Der Reihe nach werden nun einige Apache-Module aktiviert, die wie actions benötigt werden, sonst läuft php5 nicht als CGI-Modul:

a2enmod actions
a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include

Die Konfiguration findet in der Datei /etc/apache2/apache2.conf statt, wo auch AddType und AddHandler definiert werden:

ScriptAlias /cgi-bin/ “/usr/lib/cgi-bin/”
AddType application/x-httpd-php5 .php5
Action application/x-httpd-php5 “/cgi-bin/php”

Somit werden alle Dateien mit der Endung .php5 vom CGI-Modul verarbeitet statt mit dem Apache-Modul. Alle Dateien jedoch umzubenennen wäre jetzt eine Menge Arbeit. Es geht einfacher indem im gewünschten VHost, die folgenden Zeilen eingetragen werden:

<VirtualHost *:80>
<Directory /var/www/htdocs >
Options +ExecCGI
</Directory>
AddType application/x-httpd-php5 .php
</VirtualHost>

Nun werden alle Dateien mit php5 ausgeliefert und die Seite kann ausgiebig getestet werden bevor der komplette Umstieg von php4 zu php5 gemacht wird.

Ein testen der aktuellen Konfiguration und ein anschließender Neustart ist selbsverständlich:

apache2ctl configtest
apache2ctl restart

Author: admirableadmin

Hello World! Ich bin Andreas Peichert und entwickle und programmiere Software seit 2000. Zurzeit arbeite ich als Senior Solution Architect.

2 thoughts on “Apache: php4 und php5 parallel”

  1. wo kommen die drei Zeilen
    ScriptAlias /cgi-bin/ “/usr/lib/cgi-bin/”
    AddType application/x-httpd-php5 .php5
    Action application/x-httpd-php5 “/cgi-bin/php”

    in der apache2.conf hin? einfach hinten rangebamselt vor dem inlcude der virtualhosts? oder wo?

    lg
    Sven

  2. Hallo Sven,

    Die Stelle wo es steht ist nicht wichtig, klar muss es vor dem Einbinden der VHosts stehen. Aber such in der apache2.conf nach AddType, dann steht da zum Beispiel eine Zeile wie “AddType application/x-tar .tgz” oder was mit .php und .phps, da kommen die genannten drei Zeilen dann drunter, damit es inhaltlich zusammen passt und später wiedergefunden wird.

    Gruß

Leave a Reply

Your email address will not be published. Required fields are marked *