Mehrere PHP Versionen unter Ubuntu 12.04 / Plesk 12 verwenden

Nachdem ich lange gesucht habe, hier eine Lösung, die auf meinen vServer, bei Hosteurope problemlos funktioniert hat.

#!/usr/bin/env bash

# Get version from first command line parameter
version=$1
# Install build build essentials
apt-get install -y build-essential
# Install PHP5 build dependencies
apt-get build-dep -y php5
# Install libraries
apt-get install -y libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev libxml2 libxml2-dev libssl-dev pkg-config curl libcurl4-nss-dev enchant libenchant-dev libjpeg8 libjpeg8-dev libpng12-0 libpng12-dev libvpx1 libvpx-dev libfreetype6 libfreetype6-dev libt1-5 libt1-dev libgmp10 libgmp-dev libicu48 libicu-dev mcrypt libmcrypt4 libmcrypt-dev libpspell-dev libedit2 libedit-dev libsnmp15 libsnmp-dev libxslt1.1 libxslt1-dev libbz2-dev libpq-dev
# Symlink libc-client.a to avoid error with .with-imap
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a
# Create download URL for german mirror
phpUrl=http://de1.php.net/get/php-${version}.tar.bz2/from/this/mirror

# Create temp filename
phpTarFile=/usr/local/src/php-${version}.tar.bz2

# Download php source if not exists
[ ! -f "${phpTarFile}" ] && wget ${phpUrl} -O ${phpTarFile}
# Check if file was downloaded
if [[ -f "${phpTarFile}" ]]; then
  # Untar the archive
  tar jxf ${phpTarFile} -C /usr/local/src/
  # Save current path
  pushd .
  # Change dir to extracted PHP
  cd /usr/local/src/php-${version}/
  # Run the configure command
  ./configure --prefix=/usr/local/php-${version} --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-zlib --with-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-pdo-mysql --with-mysqli --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-imap --with-imap-ssl --with-kerberos --with-gettext --enable-fpm --enable-fastcgi --enable-cgi
  # Run the make process using all processors
  make -j $(grep processor /proc/cpuinfo | wc -l)
  # Run make install
  make install
  # Copy dev php.ini to target directory
  cp /usr/local/src/php-${version}/php.ini-development /usr/local/php-${version}/etc/php.ini
  # Updae timezone to Europe/Berlin in php.ini
  sed -i "s#;date.timezone =#date.timezone = Europe/Berlin#" /usr/local/php-${version}/etc/php.ini
  # Remove PHP registration from plesk, this might fail but is ok
  /usr/local/psa/bin/php_handler --remove -id fastcgi-${version}
  # And finally we register PHP ${version} with Plesk
  /usr/local/psa/bin/php_handler --add -displayname "${version}" -path /usr/local/php-${version}/bin/php-cgi -phpini /usr/local/php-${version}/etc/php.ini -type fastcgi -id "fastcgi-${version}"
  popd
  else
  echo "Unable to download ${phpUrl}"
fi

Den Inhalt in z.b. "install_php.sh" speichern und mit "./install_php.sh 5.6.5", zur Installation von php-5.6.5, aufrufen. Die angegebene Version wird dann unter /usr/local/php-x.x.x installiert und kann im Plesk unter Service-Pakete/ Hosting-Parameter oder Domain/Hosting-Parameter ausgewählt werden (Siehe Grafik).

Wichtig vor der Installation auf richtige Plesk-Version Prüfen. Das hier angegebenen Script hat auf mehereen Installationen Ubuntu 12.04 (LTS) und Plesk 12.0.18 Update #33 ohne Probleme funktioniert.

 

P.S: Wer Probleme hat mit CURL  / NSS (z.B. Zertifikat Ableich beim Aktualisieren von Software) Zeile 10 "libcurl4-nss-dev" gegen "libcurl4-openssl-dev" austauschen und das Script nochmal ausführen. Danke für den Hinweis an Rainer