How To Use Multiple PHP Versions (PHP-FPM & FastCGI) With ISPConfig 3 (CentOS 6.3) - Page 2

3 Building PHP 5.3.22 (FastCGI)

Download and extract PHP 5.3.22:

mkdir /opt/phpfcgi-5.3.22
mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget http://de.php.net/get/php-5.3.22.tar.bz2/from/this/mirror -O php-5.3.22.tar.bz2
tar jxf php-5.3.22.tar.bz2

cd php-5.3.22/

Install the prerequisites for building PHP5:

yum groupinstall 'Development Tools'

yum install libxml2-devel libXpm-devel gmp-devel libicu-devel t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel libtidy-devel libxslt-devel libmcrypt-devel pcre-devel curl-devel mysql-devel ncurses-devel gettext-devel net-snmp-devel libevent-devel libtool-ltdl-devel libc-client-devel postgresql-devel

Configure and build PHP 5.3.22 as follows (you can adjust the ./configure command to your needs, take a look at

./configure --help

to see all available options; if you use a different ./configure command, it is possible that additional libraries are required, or the build process will fail):

./configure \
--prefix=/opt/phpfcgi-5.3.22 \
--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=apache \
--with-fpm-group=apache \
--with-libdir=lib64 \
--enable-ftp \
--with-imap \
--with-imap-ssl \
--with-kerberos \
--with-gettext \
--enable-cgi

The last switch (--enable-cgi) makes sure this PHP version will work with FastCGI.

make
make install

Copy php.ini to the correct location:

cp /usr/local/src/php5-build/php-5.3.22/php.ini-production /opt/phpfcgi-5.3.22/lib/php.ini

That's it - if you like, you can now install some additional modules like APC, memcache, memcached, and ioncube.

The APC, memcache, and memcached modules can be installed through PEAR which we must install and initialize first:

yum install php-pear

cd /opt/phpfcgi-5.3.22/etc

pecl -C ./pear.conf update-channels

APC can now be installed as follows:

pecl -C ./pear.conf install apc

Accept all default values. Afterwards, open /opt/phpfcgi-5.3.22/lib/php.ini...

vi /opt/phpfcgi-5.3.22/lib/php.ini

... and add the line extension=apc.so at the end of the file (you can also configure some additional APC settings):

[...]
extension=apc.so
apc.enabled=1
apc.shm_size=128M
apc.ttl=0
apc.user_ttl=600
apc.gc_ttl=600
apc.enable_cli=1
apc.mmap_file_mask=/tmp/apc.XXXXXX
;apc.mmap_file_mask=/dev/zero
;apc.shm_segments = 5

The memcache extension can be installed as follows:

pecl -C ./pear.conf install memcache

Open /opt/phpfcgi-5.3.22/lib/php.ini...

vi /opt/phpfcgi-5.3.22/lib/php.ini

... and add the line extension=memcache.so at the end of the file:

[...]
extension=memcache.so

The memcached extension can be installed as follows:

yum install libmemcached-devel

pecl -C ./pear.conf install memcached

Open /opt/phpfcgi-5.3.22/lib/php.ini...

vi /opt/phpfcgi-5.3.22/lib/php.ini

... and add the line extension=memcached.so at the end of the file:

[...]
extension=memcached.so

The ionCube Loader can be installed as follows:

cd /tmp

Next download and unpack the correct ionCube Loader package for your architecture (x86_64 or x86).

For x86_64:

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar xfvz ioncube_loaders_lin_x86-64.tar.gz

For x86:

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
tar xfvz ioncube_loaders_lin_x86.tar.gz

Proceed as follows:

cp ioncube/ioncube_loader_lin_5.3.so /opt/phpfcgi-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so
vi /opt/phpfcgi-5.3.22/lib/php.ini

Add the line zend_extension = /opt/phpfcgi-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so right at the beginning of the file (before the [PHP] line):

zend_extension = /opt/phpfcgi-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so
[PHP]
[...]

In ISPConfig 3.0.5, you can configure the new PHP version under System > Additional PHP Versions. On the Name tab, you just fill in a name for the PHP version (e.g. PHP 5.3.22) - this PHP version will be listed under this name in the website settings in ISPConfig:

Go to the FastCGI Settings tab (the PHP-FPM Settings tab can be left empty) and fill out the fields as follows:

Share this page:

8 Comment(s)

Add comment

Comments

From: Anonymous at: 2013-03-21 10:09:02

http://www.lifelinux.com/error-compiling-php-on-centos-x64/

From: BTDT at: 2013-10-01 20:38:56

I did

./configure ----enable-fpm --with-fpm-user=apache --with-fpm-group=apache

then make & make install.

But with the following command the system cant find the file php.ini-production

cp /usr/local/src/php5-build/php-5.3.22/php.ini-production /opt/php-5.3.22/lib/php.ini

 

what i'm doing wrong. Sorry i'm new to this.

 Thanks

From: Matt Janssen at: 2014-11-11 19:00:22

This was perfect for helping me install PHP 5.3 alongside PHP 5.5 (Remi) for testing on Nginx PHP-FPM. I knew there was a way to run multiple PHP versions on CentOS 6.5, but I wasn't sure what the build commands where. I ended up using PHP 5.3.29. I also used /opt/php-5.3.29/var/run/php5-fpm.sock UNIX socket instead of the port listening. Thanks!!!

From: Anonymous at: 2013-04-09 06:41:29

On CentOS 6.4 and PHP 5.2.17 it worked when I configured PHP with the option --enable-fastcgi instead of --enable-cgi

 

From: Anonymous at: 2013-09-11 12:06:16

for php 5.2.17 --enable-fastcgi is correct and working for me.

From: Sagar MAllick at: 2014-01-16 07:33:56

I am first install isp 3.0.5 and then i follow as per your website isntruction but i not understand how to run the php .where i put the index.php and test php 5.3.22 or 5.4.17 is run or work.

Help me.

From: otx at: 2015-02-02 12:37:10

Hi,

Obviously, you did not tested this tutorial on Centos 6. There is no libc-client.a on Centos 6.6, so php won't build with the presented configure options. if you want this tutorial to give the expected results, you should also include the solution to build a prober imap library.

From: Michael at: 2015-02-26 11:44:02

The Startscript doesnt work with Centos 7.0.  In CentOS/RHEL 7, the init scripts have been replaced with service units. Does any body know how to install an second php version or how to configure the start scripts?