Web-Server

ID #1373 PHP-Versionen im parallel-Betrieb

Die alte Geschichte:

  • Wir wollen gerne die neue Version PHP 5.3 testen.
  • Oder ein Webhosting-Kunde braucht diese Version dringend (!!!) für sein Projekt.
  • ...

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:

  • Ein einzelnes Web ohne PHP-Modul dafür mit PHP 5.3 als CGI mit der Dateiendung .php
  • Einrichtung eines cgi-php53-Verzeichnisses.
  • Nutzung von FastCGI.
  • ...

 

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.

 

sozial Bookmarking
Bookmarken bei YIGG Bookmarken bei Mister-Wong Bookmarken bei Icio Bookmarken bei del.icio.us Bookmarken bei Technorati Bookmarken bei Furl Bookmarken bei Spurl Bookmarken bei Yahoo Bookmarken bei Google

vom 2009-10-28 09:53, zuletzt 2009-10-28 09:58     Artikel ausdrucken Artikel weiterempfehlen Als PDF-Datei anzeigen

Dieser Inhalt ist unter der Creative-Commons Lizenz lizensiert.

Probleme bitte im Server-Support-Forum diskutieren.

überflüssig 1 2 3 4 5 wertvoll  
Durchschnittliche Bewertung:   5 von 5 (1 Bewertungen)

Artikel kommentieren