Die alte Geschichte:

Lösungs-Ansatz:

Unter Apache kann man immer nur eine PHP-Version als Modul laufen lassen. Aber wir haben die Möglichkeit mit Hilfe der CGI-Schnittstelle eine andere Version aufzurufen. Wie das zu realisieren ist, zeige ich im folgenden Lösungsansatz.

Vorweg noch: Es gibt dutzende Möglichkeiten zur Verfeinerung. Ich möchte hier nur das grundsätzliche Prinzip vorstellen.

Installation & Konfiguration:

Die Umsetzung besteht aus zwei Schritten:
1.) PHP kompilieren
2.) Apache konfigurieren

PHP kompilieren

Wir fangen erstmal mit der altbekannten Kompilierung des neuen PHP an:
(Link ggf. von der Seite www.php.net/downloads.php aktualisieren!)

cd /usr/local/src
wget http://de2.php.net/distributions/php-5.3.0.tar.gz
tar xzfv php-5.3.*.tar.gz
cd php-5.3.0/

Erster Schritt ist wie üblich der Aufruf von ./configure. Am einfachsten ist es jeweils die Parameter der bestehenden PHP-Installation zu nehmen. Diesen findet man i.d.R. in der Ausgabe von phpinfo().

echo '' | php | less

Da wir diese PHP-Version parallel installieren wollen, müssen wir ein paar Änderungen vornehmen, indem wir alle Verzeichnisse mit dem Namen php5 in php53 umbenennen:

./configure --prefix=/usr/share/php53\
 --datadir=/usr/share/php53\
 --mandir=/usr/share/man\
 --bindir=/usr/bin/php53\
 --with-libdir=lib64\
 --includedir=/usr/include\
 --sysconfdir=/etc/php53/apache2\
 --with-config-file-path=/etc/php53/cli\
 --with-config-file-scan-dir=/etc/php53/conf.d\
 --enable-libxml\
 --enable-session\
 --with-pcre-regex=/usr\
 --enable-xml\
 --enable-simplexml\
 --enable-filter\
 --disable-debug\
 --enable-inline-optimization\
 --disable-rpath\
 --disable-static\
 --enable-shared\
 --with-pic\
 --with-gnu-ld

Hierbei muss jetzt auf die Fehlermeldungen geachtet werden. Denn häufig fehlen einem die nötigen Devel-Pakete der einzelnen Libraries oder gar der C-Compiler selbst. Diese müssen jeweils mit der Paketverwaltung gesucht und installiert werden.
Wer den "configure-Test" dann bestanden hat, kann an das eigentliche Kompilieren gehen:

make
make test
make install

Der letzte Befehl sorgt dafür dass alle nötigen Verzeichnisse, die wir oben in php53 geändert haben, erstellt werden, die erste php.ini-Datei erstellt wird und alle nötigen Binaries an Ihre Zielorte kopiert werden.
Damit ist PHP nun auch in der Version 5.3 auf dem Rechner verfügbar.

Apache konfigurieren

Wie oben schon angedeutet wurde, wird hier nur eine rudimentäre Methode angesprochen. Und zwar konfigurieren wir den Apache global auf die Datei-Endung .php53.
Es stehen aber auch andere Möglichkeiten zur Auswahl:

 

Wir legen die Datei /etc/apache2/conf.d/php53.conf an:

# Alias auf das PHP 5.3-Verzeichnis setzten:
ScriptAlias /bin-php53 /usr/bin/php53/
# MIME-Type und Action definieren:
AddHandler php53-cgi .php53
Action php53-cgi /bin-php53/php-cgi
# Zugriff auf das PHP 5.3-Verzeichnis regeln:
<Directory /usr/bin/php53>
    # Für Sicherheitsfanatiker:
    AllowOverride None
    # Wir wollen hier CGI-Schnittstelle nutzen und ggf. Softlinks auflösen:
    Options +ExecCGI +FollowSymLinks
    # Den Zugriff auf das Verzeichnis überhaupt erlauben:
    Order allow,deny
    Allow from all
</Directory>

Nach einem Apache-Reload sollte nun eine Datei mit der Endung .php53 durch die neue Version interpretiert werden. Einfach mal mit einer Datei phpinfo.php53 versuchen.

Bemerkungen:

Wer aufgepasst hat, weiß dass sich die php.ini unter /etc/php53/cli/ befindet. Das hatte ich so gewählt, weil wir eine Commandozeilen-Version kompilieren wollten. Wer PHP 5.3 als Modul kompilieren möchte, muss die configure-Parameter sowieso nochmal modifizieren.

Kategorien:

Stichwörter:

apache · php · php5 · version · cgi · fastcgi · modul · phpinfo · configure ·