Run different PHP versions on virtual hosts in apache 2.2

CoursesWeb picture CoursesWeb · Aug 12, 2012 · Viewed 16.9k times · Source

How can I configure Apache 2.2 server to have PHP 5.3 in all virtual hosts, except one virtual host in which to run PHP 4.4? I have all the php and .dll files.

Answer

Peter Ilfrich picture Peter Ilfrich · Aug 12, 2012

Original article explaining the solution no longer available. Replaced by Wayback Machine entry (Dec 2020) (https://web.archive.org/web/20190922142848/http://gggeek.altervista.org/2007/07/21/running-multiple-php-versions-on-a-single-apache-install/)

Example VHost configuration:

# Port-based virtual hosting: every php install uses a vhost on a different port
Listen 8447
Listen 8423

### BASE virtualhost
### set up the main php version we're using
<VirtualHost *:80>
    LoadModule php5_module "E:/php5/php5apache2_2.dll"
    PHPIniDir "E:/php5"
    php_value extension_dir "E:/php5/ext/"
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
</VirtualHost>

<VirtualHost *:8447>
    # it would be handy to use php_value directives, but CGI versions of php     will not grok them,
    # so we rely on different php.ini
    SetEnv PHPRC "E:/php4/"
    ScriptAlias /php447/ "E:/php4/"
    Action application/x-httpd-php447 "/php447/php.exe"
    AddType application/x-httpd-php447 .php .inc
    # apache 2.2 denies access to the php cgi executable, unless it is explicitly granted
    <Directory "E:/php4/">
      <Files "php.exe">
        Allow from all
      </Files>
    </Directory>
</VirtualHost>

<VirtualHost *:8423>
    SetEnv PHPRC "E:/php423/"
    ScriptAlias /php423/ "E:/php423/"
    Action application/x-httpd-php423 "/php423/php.exe"
    AddType application/x-httpd-php423 .php .inc
    <Directory "E:/php423/">
      <Files "php.exe">
        Allow from all
      </Files>
    </Directory>
</VirtualHost>