Search Posts

use multiple PHP version at a same time with a single xampp installation

Why switch between PHP versions when you can use multiple PHP
version
at a same time with a single xampp installation?
With a single xampp installation, you have 2 options:

  1. Run an older PHP version for only the directory of your old project:
    This will serve the purpose most of the time, you may have one or two
    old projects that you intend to run with older PHP version.
    Just configure xampp to run older PHP version only for
    those project directories.
  2. Run an older PHP version on a separate port of xampp: Sometimes you may
    be upgrading and old project to latest PHP version when you need to run the
    same project on new and older PHP version back and forth.
    Then you can set an older PHP version on a different port (say 8056)
    so when you go to http://localhost/any_project/ xampp runs PHP 7
    and when you go to http://localhost:8056/any_project/ xampp runs PHP
    5.6.
  3. Run an older PHP version on a virtualhost: You can create a virtualhost
    like localhost56 to run PHP 5.6 while you can use PHP 7 on localhost.

Lets set it up.

Step 1: Download PHP

So you have PHP 7 running under xampp, you want to add an older PHP version to it, say PHP 5.6. Download the nts (Non Thread Safe) version of PHP zip archive from php.net (see archive for older versions) and extract the files under c:\xampp\php56. The thread safe version does not include php-cgi.exe.

Step 2: Configure php.ini

Open c:\xampp\php56\php.ini file in notepad. If the file does not exist copy php.ini-development to php.ini and open it in notepad. Then uncomment the following line:

Step 3: Configure apache

Open xampp control panel, click config button for apache, and click Apache (httpd-xampp.conf). A text file will open up put the following settings at the bottom of the file:

Note: You can add more versions of PHP to your xampp installation following step 1 to 3 if you want.

Step 4 (option 1): [Add Directories to run specific PHP version]

Now you can set directories that will run in PHP 5.6. Just add the following at the bottom of the config file to set directories.

Step 4 (option 2): [Run older PHP version on a separate port]

Now to to set PHP v5.6 to port 8056 add the following code to the bottom of the config file.

Step 4 (option 3): [Run an older PHP version on a virtualhost]

To create a virtualhost (localhost56) on a directory (htdocs56) to use PHP v5.6 on http://localhost56, create directory htdocs56 at your desired location and
add localhost56 to your hosts file (see how),
then add the following code to the bottom of httpd-xampp.conf file.

Finish: Save and Restart Apache

Save and close the config file, Restart apache from xampp control panel. If you went for option 2 you can see the additional port(8056) listed in your xampp control panel.

enter image description here

Update for Error:
malformed header from script ‘php-cgi.exe’: Bad header

If you encounter the above error, open httpd-xampp.conf again and comment out the following line with a leading # (hash character).

Leave a Reply