I’ve started looking how to enable both PHP4 and PHP5 on our (relatively) new dev box running Gentoo. The box is already running PHP4 so the task was to add PHP5 support as well.
The official guide is rich in options you can use to achieve this. I didn’t want any CGI since we use PHP vhost configurations extensively and I didn’t want to deal with suPHP as well. Since it is a dev box, it is totally OK to have two instances with similar configurations running on two different ports. Unfortunately, it is the part of the official docs that is not as complete as other parts and not working as advertised. So, here’s a mental note (for me) and perhaps a few hour saver for others.
First of all, just copy
/etc/init.d/apache2-php5. There’s no need to change anything in this file
$ diff /etc/init.d/apache2 /etc/init.d/apache2-php5 $
since it will look to
/etc/conf.d/apache2-php5 for default configuration and that is where we will make our changes. So, copy
Here’s a list of changes that works for me
$ diff /etc/conf.d/apache2 /etc/conf.d/apache2-php5 1c1 < # /etc/conf.d/apache2: config file for /etc/init.d/apache2 --- > # /etc/conf.d/apache2-php5: config file for /etc/init.d/apache2-php5 20c20 < APACHE2_OPTS="-D DEFAULT_VHOST -D PHP4" --- > APACHE2_OPTS="-D DEFAULT_VHOST -D PHP5" 34c34 < #CONFIGFILE=/etc/apache2/httpd.conf --- > CONFIGFILE=/etc/apache2/httpd-php5.conf
Basically, it uses PHP 5 and points to other httpd.conf file. So the next step is to copy
/etc/apache2/httpd-php5.conf and make some changes (port numbers, files used, etc). Here’s an example
$ diff /etc/apache2/httpd.conf /etc/apache2/httpd-php5.conf 88c88 < PidFile "/var/run/apache2.pid" --- > PidFile "/var/run/apache2-php5.pid" 214c213 < Listen 80 --- > Listen 8000 587c586 < ErrorLog logs/error_log --- > ErrorLog logs/error-php5_log 617c616 < CustomLog logs/access_log common --- > CustomLog logs/access-php5_log common
Finally, you’ll have to modify your existing virtual host configurations to include a conf for the new port (
8000 in this case). So for the default vhost configuration located in
/etc/apache2/vhosts.d/00_default_vhost.conf you should add this line
and make another copy of default configuration of port
<VirtualHost *:80> </VirtualHost>
<VirtualHost *:8000> </VirtualHost>
Start these two Apache instances
/etc/init.d/apache2 start /etc/init.d/apache2-php5 start
and that’s all folks!