windows快速切换php版本
因为有几个项目用的laravel10,composer的php版本不一样,手动去环境变量里面改很麻烦,所以写了个bat方便切换
创建一个setphp.bat
的文件来自动设置系统变量,PHP_HOME
是多个php版本的父目录,PHP_VERSION
是版本文件夹的名称,前两个是bat自动设置的,然后到系统变量Path里面手动添加%PHP_HOME%\%PHP_VERSION%
,按php的位置来拼接路径
使用方法:双击打开,或者放到Path系统环境变量中全局使用,cmd输入setphp
,然后输入7或者8就可以了。
@echo off
chcp 65001
::修改环境变量需要管理员权限,知乎复制的获取管理员权限运行
cd /d "%~dp0"
cacls.exe "%SystemDrive%\System Volume Information" >nul 2>nul
if %errorlevel%==0 goto Admin
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
echo Set RequestUAC = CreateObject^("Shell.Application"^)>"%temp%\getadmin.vbs"
echo RequestUAC.ShellExecute "%~s0","","","runas",1 >>"%temp%\getadmin.vbs"
echo WScript.Quit >>"%temp%\getadmin.vbs"
"%temp%\getadmin.vbs" /f
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
exit
:Admin
::如果没设置PHP_HOME,则设置PHP_HOME
set "EXPECTED_PHP_HOME=D:\phpstudy_pro\Extensions\php"
if "%PHP_HOME%" neq "%EXPECTED_PHP_HOME%" (
setx /m PHP_HOME "%EXPECTED_PHP_HOME%
)
:loop
set /p version=请输入要切换到的 PHP 版本(7或 8):
echo %version%
::设置PHP_VERSION
if "%version%" == "7" (
setx /m PHP_VERSION php7.4.3nts
echo PHP version set to 7.4.3
) else if "%version%" == "8" (
setx /m PHP_VERSION php8.1.20nts
echo PHP version set to 8.1.20
) else (
echo 无效的PHP版本
)
goto loop
关于这段代码:
EXPECTED_PHP_HOME
变量是预期的php根目录,我的是D:\phpstudy_pro\Extensions\php
,如果环境变量的PHP_HOME
不存在或者目录不对,就会修改为指定的目录。version
变量就是输入的php版本号,setx /m PHP_VERSION php8.1.20nts
表示将PHP_VERSION
设置为php8.1.20nts
。
这样一来,就拼接出了完整的php目录D:\phpstudy_pro\Extensions\php\php8.1.20nts
。然后跳到提问开头进行循环,方便来回切换。
补充:
后面我用了另外一种方式,可以不用切换了,直接把各个版本的php复制一份改为php81
php74
,然后把他们的路径都添加到Path,同样地,复制composer.bat改成composer81.bat
和composer74.bat
,把里面的内容改为@php81 "%~dp0composer.phar" %*
,@php74 "%~dp0composer.phar" %*
,安装的时候就用composer74 require xxx
,或者composer81 require xxx
,当然之前那个也还有用,可以切换默认的php和composer
评论建议我使用虚拟机开发,因此补充下:
虚拟机平常也有使用,这篇文章主要是解决windows环境切换的。
我用的vmware运行ubuntu虚拟机+宝塔,他和docker有冲突,docker和vmware之间只能开一个,切换还要改hypervisorlaunchtype。
因为我的虚拟机装了图形界面,还有一些乱七八糟的软件,当做双系统使用,比较占内存(我给了4g内存,3g会点卡顿),修改代码保存后,主机这边刷新浏览器反应会稍慢一点(虚拟机通病,大概慢零点几秒,主要是不够丝滑)。
由于我经常开三四个phptorm,之前开十几个文件会卡,就把最大内存改成2g了,用起来更流畅,同时会开一堆浏览器网页,以及开机自启常挂后台的一些软件(qq,微信之类的),再开虚拟机的话32g内存占用会到六七十,一些简单的项目我就在windows开发,比较复杂的就放虚拟机了
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐使用 phpenv支持php8.2 支持一键切换php版本 phpStudy 已经好久没有更新了
批处理可以修改一下。
从cwd获取composer.json或.phpver,解析当前路径执行php需要的版本,动态调用。
比如 在 /proj1/.phpver 里写 8.1 则在 /proj1 执行php自动调用php81
同时还能兼容composer
快别折腾windows了,整个虚拟机也行啊
虚拟机加宝塔不香吗 ? 非要在windows上折腾
你可能需要 hjbdev/pvm: PHP Version Manager for the CLI on Windows
vagrant 装个centos7 不香吗
我一直是添加 alias 的
laragon 可以快速切
你那个8.1是在哪里想下载的,为什么我找不到
linux 只要2g内存就可以用 docker :confused: