php4 and php5 in same cpanel machine

php5 works the same as php4 and it saves the permissions and etc. E.g. no problems with nobody as well.


1. Make sure you has Apache installed and workind with php4. It doesn’t matter if you run mod_php4 or php4/phpsuexec, but I recommend to have phpsuexec based install (Warning: if you are running mod_php4 and would like to switch to phpsuexec, read the threads in this forum or you may end up with numerous broken scripts!);

2. You would need to compile php 5. To do this use the SSH sessing logged as root.
Then execute preparation commands (based on cPanel for better compatibility):

/scripts/checkccompiler rm -rf /home/cpphpbuild mkdir /home/cpphpbuild cd /home/cpphpbuild wget tar xfzv php-5.0.5.tar.gz cd php-5.0.5

Make sure that we do enabled Sendmail support:

echo “#define HAVE_SENDMAIL 1” >> /home/cpphpbuild/php-5.0.5/main/php_config.h

It is recommended to apply the mail-header patch which allows to track the script which sent an email. You may skip this step.

wget patch -p1 < /home/cpphpbuild/php-5.0.5/php-5.0.5-mail-header.patch

Then one of the most important steps. It is the configuring of the php. It would be better if you undestand these options. You may use the configure from your existing php. To get them type the following:

php -i | grep configure | sed “s/’//g” | sed “s/’//g”

As you may see there are two same sed, however they are diferent! The second single quote should looks like & # 0 3 9 ; (without spaces!!) and this is for some cases when single quote sign shown as the code.
You will get the almost clean configure you are currently using. The several important hints on this.
a) REMOVE the “–with-apxs=/usr/local/apache/bin/apxs” from the line. We are going to compile CGI version and it WILL broke the Apache!

b) Make sure you have the following prefixes and suffixes to install to the proper directories – otherwise currently installed php could be broken:
–prefix=/usr/local/php5 –exec-prefix=/usr/local/php5 –program-suffix=5

c) Add the necessary options for proper CGI redirects from Apache:
–enable-force-cgi-redirect –enable-discard-path

The result line will looks like this (please, do not use it – it has no CURL and PostgreSQL support – you better to follow steps above):

./configure –prefix=/usr/local/php5 –exec-prefix=/usr/local/php5 –program-suffix=5 –with-xml –enable-bcmath –enable-calendar –enable-ftp –with-gd –enable-exif –with-jpeg-dir=/usr –with-png-dir=/usr –with-xpm-dir=/usr/X11R6 –with-imap –with-imap-ssl –with-kerberos –enable-mbstring –with-mbstring=all –enable-mbstr-enc-trans –with-mcrypt –with-mhash –enable-magic-quotes –with-mysql=/usr –with-openssl –enable-discard-path –with-pear –enable-sockets –enable-track-vars –with-ttf –with-freetype-dir=/usr –enable-versioning –with-zlib –with-pspell –with-gettext –enable-inline-optimization –disable-debug –enable-force-cgi-redirect –enable-discard-path

So, we are ready to start the compiling. Execute “make install” and it starts…
If the process fails for any reason, carefully read the errors – usually they are self-explaining. In MOST cases errors are because of the inproper configure params.

Then run the cPanel script to complete:

The compiled version of php should be copied to the cPanel cgi-sys:

cp -f /usr/local/php5/bin/php5 /usr/local/cpanel/cgi-sys/php5 chown root:wheel /usr/local/cpanel/cgi-sys/php5

Our installation has no php.ini file yet. On MOST systems Zend Optimizer installed. In this case you may just create the symlink:

ln -s /usr/local/Zend/etc/php.ini /usr/local/php5/lib/php.ini

Otherwise copy the default php.ini and edit it if needed:

cp -p /home/cpphpbuild/php-5.0.5/php.ini-recommended /usr/local/php5/lib/php.ini chown root.root /usr/local/php5/lib/php.ini chmod 644 /usr/local/php5/lib/php.ini

It is recommended to add the following line to the php.ini at the bottom (it is a MUST if you compile php4 instead php5!). Note that this line will broke regular php4. As a common rule – if you are using the same php.ini, do not add this line:

cgi.fix_pathinfo = 1 ; needed for CGI/FastCGI mode

Now we need to add several lines to Apache.

Run editor (you may use “vi” or “pico -w”):
pico -w /usr/local/apache/conf/httpd.conf

Scroll down (better use the built-in search) to the “”
There we should to add index.php5 after, but before index.php4. Result would looks like this:

DirectoryIndex index.html index.wml index.cgi index.shtml index.jsp index.js index.php5 iindex.php4 index.php3 index.php index.phtml ndex.htm default.htm default.html home.htm

This to allow index.php5 as index file.

Continue editing. Find the “AddType application/x-httpd-php .phtml” and after it add this:

Action application/x-httpd-php5 “/cgi-sys/php5” AddHandler application/x-httpd-php5 .php5

This is the directives for Apache to use own php5 for files with extensions .php5

Check if we could find this line “ScriptAlias /cgi-sys/ /usr/local/cpanel/cgi-sys/”
If not – add it or our directive will not work. By default cPanel add this line. Just to warn you.

Save the file and quit.

Verify that you not broke the Apache config by running:

service httpd configtest

You SHOULD to get “Syntax OK” at the end and possible some minor warnings about “NameVirtualHost directive” – it is OK.
Warning: if you get ERROR – DO NOT RESTART APACHE AND LOCATE THE ISSUE. Otherwise Apache will not start at all!

When you make sure it is OK restart the Apache:

service httpd stop service httpd startssl

Check that Apache come ok:

lynx –dump http://localhost/whm-server-status;

It will show you the Apache status.

Well, I should congratulate you – you have done it!

To test php5 upload the simple php file with the following content to any of your sites and name this file phpinfo.php AND ANOTHER COPY phpinfo.php5:

Then launch browser and point to phpinfo.php file first to see that php4 still OK

  1. Alexwebmaster said:

    Hello webmaster
    I would like to share with you a link to your site
    write me here

  2. Rengenx said:

    Потыкаю по рекламке в качестве благодарности за статью!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: