With CentOS, you can do this using a combination of fastcgi for one version of PHP and php-fpm for another, as described here:
https://web.archive.org/web/20130707085630/http://linuxplayer.org/2011/05/intall-multiple-version-of-php-on-one-server
Based on CentOS 5.6, Apache only
1. Enable the rpmforge and epel yum repository
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm sudo rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm sudo rpm -ivh epel-release-5-4.noarch.rpm
2. Install php-5.1
CentOS / RHEL 5.x have php-5.1 in the field, just install it with yum, for example:
sudo yum install php php-mysql php-mbstring php-mcrypt
3. Compile and install php 5.2 and 5.3 from source
For php 5.2 and 5.3, we can find many rpm packages on the Internet. However, they all conflict with php, which comes with CentOS, so it’s better to build and install them from soure, it’s not difficult, you need to install php in another place.
However, when installing php as an apache module, we can use only one php version at a time. If we need to run another version of php on the same server, at the same time, for example, for another virtual host, a different version of php may be required. Fortunately, cool FastCGI and PHP-FPM can help.
Create and install php-5.2 with fastcgi enabled
1) Install the necessary developer packages
yum install gcc libxml2-devel bzip2-devel zlib-devel \ curl-devel libmcrypt-devel libjpeg-devel \ libpng-devel gd-devel mysql-devel
2) Compile and install
wget http://cn.php.net/get/php-5.2.17.tar.bz2/from/this/mirror tar -xjf php-5.2.17.tar.bz2 cd php-5.2.17 ./configure --prefix=/usr/local/php52 \ --with-config-file-path=/etc/php52 \ --with-config-file-scan-dir=/etc/php52/php.d \ --with-libdir=lib64 \ --with-mysql \ --with-mysqli \ --enable-fastcgi \ --enable-force-cgi-redirect \ --enable-mbstring \ --disable-debug \ --disable-rpath \ --with-bz2 \ --with-curl \ --with-gettext \ --with-iconv \ --with-openssl \ --with-gd \ --with-mcrypt \ --with-pcre-regex \ --with-zlib make -j4 > /dev/null sudo make install sudo mkdir /etc/php52 sudo cp php.ini-recommended /etc/php52/php.ini
3) create a wrapper fastcgi script
create file / usr / local / php 52 / bin / fcgiwrapper.sh
#!/bin/bash PHP_FCGI_MAX_REQUESTS=10000 export PHP_FCGI_MAX_REQUESTS exec /usr/local/php52/bin/php-cgi chmod a+x /usr/local/php52/bin/fcgiwrapper.sh Build and install php-5.3 with fpm enabled wget http://cn.php.net/get/php-5.3.6.tar.bz2/from/this/mirror tar -xjf php-5.3.6.tar.bz2 cd php-5.3.6 ./configure --prefix=/usr/local/php53 \ --with-config-file-path=/etc/php53 \ --with-config-file-scan-dir=/etc/php53/php.d \ --enable-fpm \ --with-fpm-user=apache \ --with-fpm-group=apache \ --with-libdir=lib64 \ --with-mysql \ --with-mysqli \ --enable-mbstring \ --disable-debug \ --disable-rpath \ --with-bz2 \ --with-curl \ --with-gettext \ --with-iconv \ --with-openssl \ --with-gd \ --with-mcrypt \ --with-pcre-regex \ --with-zlib make -j4 && sudo make install sudo mkdir /etc/php53 sudo cp php.ini-production /etc/php53/php.ini sed -i -e 's#php_fpm_CONF=\${prefix}/etc/php-fpm.conf#php_fpm_CONF=/etc/php53/php-fpm.conf#' \ sapi/fpm/init.d.php-fpm sudo cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm sudo chmod a+x /etc/init.d/php-fpm sudo /sbin/chkconfig --add php-fpm sudo /sbin/chkconfig php-fpm on sudo cp sapi/fpm/php-fpm.conf /etc/php53/
Configure php-fpm
Change / etc / php53 / php-fpm.conf, change some options. This step is mainly to uncomment some settings, you can adjust the value if you want.
pid = run/php-fpm.pid listen = 127.0.0.1:9000 pm.start_servers = 10 pm.min_spare_servers = 5 pm.max_spare_servers = 20
Then run fpm
sudo /etc/init.d/php-fpm start
Install and configure mod_fastcgi, mod_fcgid
sudo yum install libtool httpd-devel apr-devel wget http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz tar -xzf mod_fastcgi-current.tar.gz cd mod_fastcgi-2.4.6 cp Makefile.AP2 Makefile sudo make top_dir=/usr/lib64/httpd/ install sudo sh -c "echo 'LoadModule fastcgi_module modules/mod_fastcgi.so' > /etc/httpd/conf.d/mod_fastcgi.conf" yum install mod_fcgid
Configuring and testing virtual hosts
1) Add the following line to / etc / hosts
127.0.0.1 web1.example.com web2.example.com web3.example.com
2) Create the root of the web document and remove the index.php under it, to show phpinfo switch to the root user, run
mkdir /var/www/fcgi-bin for i in {1..3}; do web_root=/var/www/web$i mkdir $web_root echo "<?php phpinfo(); ?>" > $web_root/index.php done
Note. An empty / var / www / fcgi -bin directory is required, DO NOT REMOVE IT LATER
3) Create an Apache configuration file (add to httpd.conf)
NameVirtualHost *:80 # module settings # mod_fcgid <IfModule mod_fcgid.c> idletimeout 3600 processlifetime 7200 maxprocesscount 17 maxrequestsperprocess 16 ipcconnecttimeout 60 ipccommtimeout 90 </IfModule> # mod_fastcgi with php-fpm <IfModule mod_fastcgi.c> FastCgiExternalServer /var/www/fcgi-bin/php-fpm -host 127.0.0.1:9000 </IfModule> # virtual hosts... ################################################################# #1st virtual host, use mod_php, run php-5.1 ################################################################# <VirtualHost *:80> ServerName web1.example.com DocumentRoot "/var/www/web1" <ifmodule mod_php5.c> <FilesMatch \.php$> AddHandler php5-script .php </FilesMatch> </IfModule> <Directory "/var/www/web1"> DirectoryIndex index.php index.html index.htm Options -Indexes FollowSymLinks Order allow,deny Allow from all </Directory> </VirtualHost> ################################################################# #2nd virtual host, use mod_fcgid, run php-5.2 ################################################################# <VirtualHost *:80> ServerName web2.example.com DocumentRoot "/var/www/web2" <IfModule mod_fcgid.c> AddHandler fcgid-script .php FCGIWrapper /usr/local/php52/bin/fcgiwrapper.sh </IfModule> <Directory "/var/www/web2"> DirectoryIndex index.php index.html index.htm Options -Indexes FollowSymLinks +ExecCGI Order allow,deny Allow from all </Directory> </VirtualHost> ################################################################# #3rd virtual host, use mod_fastcgi + php-fpm, run php-5.3 ################################################################# <VirtualHost *:80> ServerName web3.example.com DocumentRoot "/var/www/web3" <IfModule mod_fastcgi.c> ScriptAlias /fcgi-bin/ /var/www/fcgi-bin/ AddHandler php5-fastcgi .php Action php5-fastcgi /fcgi-bin/php-fpm </IfModule> <Directory "/var/www/web3"> DirectoryIndex index.php index.html index.htm Options -Indexes FollowSymLinks +ExecCGI Order allow,deny Allow from all </Directory> </VirtualHost>
4) restart apache. visit 3 sites respectfully to view phpinfo and confirm the result. i.e:
http://web1.example.com http://web2.example.com http://web3.example.com
If everything is OK, you can use one of 3 virtual hosts as a template to create a new virtual host with the required php version.