Windows Command Line - Multiple PHP Versions

11,084

Solution 1

I am doing something like below.

ex. I have two php version , PHP 5.6 and PHP 7.3

I have wamp environment so I have done as below

so I have copied D:\wamp\bin\php\php7.3.6\php.exe to D:\wamp\bin\php\php7.3.6\php7.exe

and I have copied D:\wamp\bin\php\php5.6\php.exe to D:\wamp\bin\php\php5.6\php56.exe

Then I have added both to environment variable path like below.

enter image description here

now you need reopen the cmd and you can use command something like below

php56 -v
php7 -v

You can also run command refreshenv to reload environment variables in opened cmd.

If you want change default php version, you can move paths as below.

ex if you want php 7.0.23 as default instead of php 7.3.6

see screenshot for exampleenter image description here

In above screenshot I have move php 7.0.23 above the all other php verions (php 7.3.6 and php 5.6.31).

I hope this will help.

Solution 2

Its quite simple really.

Create yourself a batch file to add php to the path, place that file in one of the folders that is currently on your PATH so you can run it from anywhere. Then whenever you are in any folder that has CLI scripts in it run the batch file

Example batch file:

Lets call it PHPPATH.CMD

path=%path%;c:\wamp\bin\php\php5.4.11
php -v

Now if you want to use another version of the PHP CLI just change the batch file or if you are feeling clever make the batch file accept a paramter so you can specify the version of php you want on the path.

Solution 3

If you are able to do so, just create aliases:

alias 'php56'='/Path/To/php5.6/bin/php'; alias 'php55'='/Path/To/php5.5/bin/php';

If not, create links in a seperate directory that point to the binaries.

php56 is a link to /Path/To/php5.6/bin/php

php55 is a link to /Path/To/php5.5/bin/php

put these into /Seperate/Path/ and add '/Seperate/Path/' to %PATH%

Hope this helps

Solution 4

I've searched how to do it really easily without changing the environment variable path with the command line (because it's character limited) and find this solution (only on windows 10) : in your environment variable path , change [D:\wamp64\bin\php\"your php version"] in [D:\wamp64\bin\php\php]

then create a junction between your php version directory and D:\wamp64\bin\php\php by running this command in cmd as administrator : mklink /J D:\wamp64\bin\php\php D:\wamp64\bin\php\php"your php version"

then you can use this batch file

echo off
::read the actual php version
::(read the second word of php -v output )
for /f "tokens=2" %%i in ('php -v') do (

    ::if actual version is 7.4.0 I want 7.4.1
    if "%%i"=="7.4.0" set phpV="7.4.1"
    ::if actual version is 7.4.1 I want 7.4.0
    if "%%i"=="7.4.1" set phpV="7.4.0"
)

::delete the old junction
rmdir "D:\wamp64\bin\php\php"

::create a new one to the version I want
::!!!!!!!!!!!!!!!!!!! paths must not contains spaces
mklink /J D:\wamp64\bin\php\php D:\wamp64\bin\php\php%phpV%

now you can run your batch file in your cmd and don't even have to restart it after.

Share:
11,084
Mike
Author by

Mike

Updated on June 19, 2022

Comments

  • Mike
    Mike almost 2 years

    I am currently running Wampserver with multiple PHP versions (5.3.8, 5.4.3). Wampserver easily allows you to switch back and forth between the php version you want apache to use. However, I'm having trouble dealing with multiple versions from the CLI. I have projects that require the command line, but some are compatible with php5.4, while some are not.

    Is there a way to create some type of "alias" in Windows that allows me to specify which version of PHP to use on the command line .. I.E: "php54 cache:clear", "php53 cache:clear" ??

    Thanks!