Windows命令行 - 多个PHP版本

14

我目前正在运行Wampserver,并使用多个PHP版本(5.3.8, 5.4.3)。Wampserver可以轻松让您在所需的apache中切换php版本,但是我在处理CLI中的多个版本时遇到了麻烦。 我有一些需要命令行的项目,但其中一些与php5.4兼容,而另一些则不兼容。

是否有一种在Windows中创建某种"别名"的方法,可以让我指定在命令行上使用哪个PHP版本,例如:"php54 cache:clear","php53 cache:clear"?

谢谢!


在实际操作中,您可以进入PHPX目录并直接使用php.exe。 - Salman Virk
这就是我一直在做的,但需要导航到该目录并键入需要运行的 PHP 脚本的完整路径是过度的。正在寻找更简便的方法来完成此操作。 - Mike
发布到 http://serverfault.com/ - Salman Virk
4个回答

43

我正在执行以下操作。

例如,我有两个 PHP 版本,PHP 5.6 和 PHP 7.3。

我有一个 WAMP 环境,所以我按照以下步骤进行了设置。

我将 D:\wamp\bin\php\php7.3.6\php.exe 复制到 D:\wamp\bin\php\php7.3.6\php7.exe

然后,我将 D:\wamp\bin\php\php5.6\php.exe 复制到 D:\wamp\bin\php\php5.6\php56.exe

接下来,我把它们都添加到环境变量路径中,如下所示。

enter image description here

现在,您需要重新打开命令提示符,并可以使用类似以下的命令。

php56 -v
php7 -v

您还可以在打开的cmd中运行命令refreshenv以重新加载环境变量。

如果您想更改默认的php版本,可以按以下方式移动路径。

例如,如果您想将php 7.0.23作为默认版本而不是php 7.3.6,则如下所示。

请参见以下截图enter image description here

在上面的屏幕截图中,我已将php 7.0.23移动到所有其他php版本(php 7.3.6和php 5.6.31)之上。

希望这会有所帮助。


3
我已经搜索了如何在不使用命令行更改环境变量路径的情况下轻松完成它(因为它受字符限制),并找到了这个解决方案(仅适用于Windows 10):
在您的环境变量路径中,将[D:\wamp64\bin\php\"your php version"]更改为[D:\wamp64\bin\php\php] 然后,在管理员模式下在cmd中运行以下命令,在您的php版本目录和D:\wamp64\bin\php\php之间创建一个联接: mklink /J D:\wamp64\bin\php\php D:\wamp64\bin\php\php"your php version" 然后,您可以使用此批处理文件。
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%

现在,您可以在命令提示符中运行批处理文件,而且甚至不必重新启动它。

2
很简单。
创建一个批处理文件来将php添加到路径中,将该文件放置在当前路径中的任何一个文件夹中,这样您就可以从任何地方运行它。 然后,每当您在任何包含CLI脚本的文件夹中时,请运行批处理文件。
示例批处理文件:
我们称其为PHPPATH.CMD。
path=%path%;c:\wamp\bin\php\php5.4.11
php -v

现在,如果您想使用另一个版本的PHP CLI,只需更改批处理文件,或者如果您感到聪明,请使批处理文件接受参数,以便您可以指定要在路径上使用的php版本。

1
如果您能够这样做,只需创建别名: 别名 'php56'='/Path/To/php5.6/bin/php'; 别名 'php55'='/Path/To/php5.5/bin/php';
如果不能,可以在一个单独的目录中创建指向二进制文件的链接。
php56 是一个指向 /Path/To/php5.6/bin/php 的链接 php55 是一个指向 /Path/To/php5.5/bin/php 的链接
将它们放入 /Seperate/Path/ 并将 '/Seperate/Path/' 添加到 %PATH% 中。
希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接