# Multiple PHP version under Ubuntu 14.04 ## Update your machine apt-get update apt-get upgrade ## Install some dependencies apt-get install build-essential This packages contain a lot of necessary tools like a c and a c++ compiler, make and other libs. ## Install git apt-get install git ## Install the lamp server (Apache MySQL PHP) apt-get install lamp-server^ The installation will ask you to choose a password for the mysql root user. Once finished, open a tab in your browser to http://localhost You should see a page with the heading "It Works!" ## Install php-farm cd /opt git clone git://git.code.sf.net/p/phpfarm/code phpfarm ## Configure PHP Before compiling any PHP version, setup the options you need vim /opt/phpfarm/src/options.sh Mine looks like this: #!/bin/bash # You can override config options very easily. # Just create a custom options file; it may be version specific: # - custom-options.sh # - custom-options-5.sh # - custom-options-5.3.sh # - custom-options-5.3.1.sh # # Don't touch this file here - it would prevent you to just "svn up" # your phpfarm source code. version=$1 vmajor=$2 vminor=$3 vpatch=$4 #gcov='--enable-gcov' configoptions="\ --enable-bcmath \ --with-mysqli \ --with-mysql \ --with-curl \ --with-png \ --with-gd \ --enable-gd-native-ttf \ --enable-calendar \ --enable-exif \ --enable-ftp \ --enable-mbstring \ --enable-pcntl \ --enable-soap \ --with-pdo-mysql \ --enable-sockets \ --enable-sqlite-utf8 \ --enable-wddx \ --enable-zip \ --with-openssl \ --with-jpeg-dir=/usr/lib \ --with-zlib \ --with-gettext \ --with-mcrypt \ --enable-intl \ $gcov" echo $version $vmajor $vminor $vpatch custom="custom-options.sh" [ -f $custom ] && source "$custom" $version $vmajor $vminor $vpatch custom="custom-options-$vmajor.sh" [ -f $custom ] && source "$custom" $version $vmajor $vminor $vpatch custom="custom-options-$vmajor.$vminor.sh" [ -f $custom ] && source "$custom" $version $vmajor $vminor $vpatch custom="custom-options-$vmajor.$vminor.$vpatch.sh" [ -f $custom ] && source "$custom" $version $vmajor $vminor $vpatch ## Compile all the PHP version you need, eg cd /opt/phpfarm/src ./compile.sh 5.5.0 If the compilation fails, just install the libraries that caused the error. In my case I had to install these packages: apt-get install libxml2 libxml2-dev libssl-dev libcurl4-openssl-dev pkg-config libicu-dev libmcrypt-dev php5-dev libgeoip-dev libmagickwand-dev libjpeg-dev libpng12-dev libmysqlclient-dev ./compile.sh 5.5.0 To verify the installation cd /opt/phpfarm/inst/bin ./php-5.5.0 --version ## Install and enable FastCGI apt-get install libapache2-mod-fastcgi apache2-mpm-worker apache2-suexec a2enmod actions fastcgi suexec service apache2 restart This will disable mod_php. Edit the /etc/apache2/apache2.conf, add these lines before the includes FastCgiServer /var/www/cgi-bin/php-cgi-5.5.0 ScriptAlias /cgi-bin-php/ /var/www/cgi-bin/ Now create the file /var/www/cgi-bin/php-cgi-5.5.0, with this content #!/bin/sh PHPRC="/etc/php5/cgi/5.5.0/" export PHPRC PHP_FCGI_CHILDREN=3 export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_MAX_REQUESTS exec /opt/phpfarm/inst/bin/php-cgi-5.5.0 Make the file executable chmod +x /var/www/cgi-bin/php-cgi-5.5.0 Configure a VirtualHost to use the php version we just configured eg: /etc/apache2/sites-available/example.conf ServerName example.dev DocumentRoot /var/www/example/ AddHandler php-cgi .php Action php-cgi /cgi-bin-php/php-cgi-5.5.0 SetHandler php-cgi Enable the site a2ensite example.conf Add the server to /etc/hosts 127.0.0.1 example.dev Restart apache service apache2 restart I got an error at this point. Apache was complaining about mod_fast already defined. To fix the problem opne this file /etc/apache2/mods-available/fastcgi.conf and comment out the last line inside the IfModule block AddHandler fastcgi-script .fcgi #FastCgiWrapper /usr/lib/apahce2/suexec #FastCgiIpcDir /var/lib/apache2/fastcgi Then restart apache again service apache2 restart If you don't get any error you will find a working installation of PHP5.5.0 at http://example.dev :)