In den letzten Jahren gab es eine Vielzahl von Weiterentwicklungen bei der Programmiersprache PHP. Viele PHP Variablen wurden verändert, sind verschwunden oder wurden durch neue Variablen ersetzt. Durch diese Entwicklung ist es immer mehr wichtig, verschiedene PHP Versionen parallel auf einen Server betreiben zu können.

Auf unseren Serversystemen setzen wir meist die kostenfreien Lösungen I-MSCP/ISPCP als Verwaltungsoberflächen für Webspace Pakete ein. Diese Verwaltungsoberfläche bietet, wie die meisten Oberflächen, von Haus aus keine Möglichkeit, zwischen den verschiedenen PHP Versionen zu wechseln. Daher haben wir ein kleines Tutorial geschrieben, das ein kleines aber sehr mächtiges How To bildet, wie man dennoch zwischen verschiedenen PHP Versionen wechseln kann.

 

Installation der Grundvoraussetzungen zum Kompilieren von PHP

 

apt-get install libfcgi-dev libmhash-dev libxml2-dev libcurl3-dev libmysqlclient15-dev libjpeg62 libjpeg62-dev libpng12-0 libpng12-dev libxslt1-dev libxslt1.1 libbz2-dev make libfreetype6 libfreetype6-dev

 

Diese Softwarepakete werden benötigt, um PHP individuell zu kompilieren. Wir lehnen uns hier an den Betriebssystem Debian oder Ubuntu an.

 

Kompilierung von PHP

 

mkdir ~/php5-build
cd ~/php5-build

 

In den PHP-Build Ordner die entsprechende PHP Version herunterladen. Alle aktuellen Versionen findet man unter PHP.net – PHP 5.2 nicht mehr, da diese nicht mehr offiziell unterstützt wird. Der entsprechende Downloadlink daher im nachfolgend:

 

wget http://uk3.php.net/get/php-5.2.17.tar.bz2/from/this/mirror -O php-5.2.17.tar.bz2
tar jxf php-5.2.17.tar.bz2
rm -R php-5.2.17.tar.bz2
cd php-5.2.17/

 

Jetzt schreiben wir die Datei, die dazu verwendet wird, PHP Entsprechend zu kompilieren:

 

nano compile

 

In diese Datei folgenden Inhalt kopieren:

 

./configure \
    --prefix=/opt/php52 \
    --enable-force-cgi-redirect \
    --enable-fastcgi \
    --with-regex=php \
    --enable-calendar \
    --enable-sysvsem \
    --enable-gd-native-ttf \
    --enable-sysvshm \
    --enable-sysvmsg \
    --enable-bcmath \
    --with-bz2 \
    --enable-ctype \
    --with-iconv \
    --enable-exif \
    --with-libdir=/lib/x86_64-linux-gnu \
    --enable-ftp \
    --with-gettext \
    --enable-gd-imgstrttf \
    --with-ttf \
    --with-freetype \
    --with-freetype-dir=/usr/include/freetype2/freetype/ \
    --enable-mbstring \
    --with-pcre-regex \
    --enable-shmop \
    --enable-sockets \
    --enable-wddx \
    --with-libxml-dir=/usr \
    --with-zlib \
    --with-openssl=/usr \
    --enable-soap \
    --enable-zip \
    --with-mhash=yes \
    --with-gd \
    --with-mysql \
    --with-mysqli \
    --with-pdo-mysql \
    --with-pear \
    --with-curl \
    --with-xsl

 

Je nach dem, welche PHP Version installiert wird, die 2. Zeile gegen /opt/php53 /opt/php54 oder /opt/php55 tauschen.

 

Hinweis: Die Zeile –with-openssl=/usr \ Kann bei Debian 7 oder neueren Ubuntu Versionen zu Problemen führen. Diese dann einfach gegen–with-openssl ohne Pfadangabe ersetzen.

 

Anschließend speichern und schreibrechte setzen.

 

chmod 755 compile

 

Jetzt das configure Script ausführen.

 

./compile

 

Ist die configure Prozess erfolgreich durchgelaufen. Kann man die entsprechende PHP Version installieren.

 

make && make install

 

Abschließend noch die Schreibrechte des PHP Ordners anpassen.

 

chmod o+rX -R /opt/php52/

Und die weitere PHP Version wurde erfolgreich installiert.

 

Einbinden der PHP Version in ISPCP/I-MSCP

 

Jetzt, nachdem PHP erfolgreich installiert wurde, muss man die passende PHP Version noch für die entsprechende Domain deklarieren. Dies funktioniert allerdings nur, wenn I-MSCP/ISPCP in der PHP5-Fcgi Variante installiert wurde.

 

Hierfür bearbeitet man die entsprechende FCGI Wrapper Datei.

 

nano /var/www/fcgi/<DOMAINNAME>/php5-fcgi-starter

 

<DOMAINNAME> muss hier gegen den entsprechenden Domainnamen ersetzt werden. Dort kommentiert man die Zeile

 

exec /usr/bin/php5-cgi

 

Aus und fügt darunter die Zeile

 

exec /opt/php52/bin/php-cgi

 

Hinzu. Dies wäre bei php52, natürlich dann php52 gegen die entsprechende PHP Version z.B. php53 php54 php55 ersetzen.

 

Nach einen Apache Neustart ist dann die neue PHP Version für diese Domain aktiviert.

 

/etc/init.d/apache2 restart

 

Über diesen Weg ist es ohne Weiteres möglich beliebig viele PHP Versionen auf den selben Serversystem bereitzustellen.