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.
Voll gut sowas !
Ich hoffe doch, dass man damit etwas anfangen kann 🙂