工具介绍

这是一个基于Windows批处理脚本的PHP版本全局环境变量设置工具,能够快速切换系统默认的PHP版本。工具会自动检测phpStudy安装目录下的所有PHP版本,清理旧的环境变量配置,并设置新的全局PHP路径,让开发者可以在命令行中直接使用指定版本的PHP命令。

功能特点

  • 自动检测:自动扫描phpStudy安装目录下的所有PHP版本

  • 权限验证:自动检查管理员权限,确保操作成功

  • 环境清理:自动清理旧的PHP路径,避免环境变量冲突

  • 即时生效:设置完成后立即刷新当前窗口环境变量

  • 验证功能:自动验证PHP版本是否设置成功

使用说明

1. 下载工具

将以下代码保存为.bat或.cmd文件(如php_version_switcher.bat、php_version_switcher.cmd):

@echo off
chcp 65001 >nul
title PHP版本全局设置工具
color 0A

:start
cls
echo ========================================
echo       PHP 版本全局设置工具
echo        (管理员权限运行)
echo ========================================
echo.

:: 检查管理员权限
net session >nul 2>&1
if %errorLevel% neq 0 (
    echo 错误:需要管理员权限!
    pause
    exit /b
)

setlocal enabledelayedexpansion
set PHP_BASE=E:\phpstudy_pro\Extensions\php
set INDEX=0

echo 当前已安装的PHP版本:
echo ---------------------------

for /d %%i in ("%PHP_BASE%\php*") do (
    if exist "%%i\php.exe" (
        set /a INDEX+=1
        for %%f in ("%%i") do (
            echo   [!INDEX!] %%~nxf
            set "VERSION_!INDEX!=%%~nxf"
        )
    )
)

if !INDEX!==0 (
    echo 未找到PHP版本
    pause
    exit /b
)

echo.
set /p CHOICE=输入要设置的版本序号(1-!INDEX!): 

if "%CHOICE%"=="" goto start

if !CHOICE! LSS 1 goto start
if !CHOICE! GTR !INDEX! (
    echo 错误:无效的序号
    pause
    goto start
)

call set SELECTED_VERSION=%%VERSION_!CHOICE!%%

cls
echo ========================================
echo        确认设置
echo ========================================
echo.
echo 将要设置为全局默认: !SELECTED_VERSION!
echo 路径: %PHP_BASE%\!SELECTED_VERSION!
echo.

set /p CONFIRM=确定要设置吗?(输入y确认,其他取消): 
if /i not "!CONFIRM!"=="y" (
    echo 操作已取消
    pause
    goto start
)

echo.
echo 正在更新系统环境变量...

:: 获取当前系统PATH
for /f "tokens=2*" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path 2^>nul') do set "SYS_PATH=%%B"

if not defined SYS_PATH (
    echo 错误:无法获取系统PATH
    pause
    exit /b
)

:: 清理所有旧的PHP路径
set "NEW_PHP_PATH=%PHP_BASE%\!SELECTED_VERSION!"
set "CLEANED_PATH="

for %%p in ("!SYS_PATH:;=";"!") do (
    set "path_part=%%~p"
    if "!path_part:%PHP_BASE%\php=!"=="!path_part!" (
        if not defined CLEANED_PATH (
            set "CLEANED_PATH=!path_part!"
        ) else (
            set "CLEANED_PATH=!CLEANED_PATH!;!path_part!"
        )
    )
)

:: 构建新的PATH
if defined CLEANED_PATH (
    set "FINAL_PATH=!NEW_PHP_PATH!;!CLEANED_PATH!"
) else (
    set "FINAL_PATH=!NEW_PHP_PATH!"
)

:: 更新系统环境变量
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /d "!FINAL_PATH!" /f >nul
if errorlevel 1 (
    echo 错误:更新注册表失败
    pause
    exit /b
)
echo 注册表更新成功!

:: 广播环境变量变更
echo 正在广播环境变量更改...
powershell -Command "[Environment]::SetEnvironmentVariable('Path', '%FINAL_PATH%', 'Machine')" >nul
if errorlevel 1 (
    echo 广播失败,可能需要重启或注销后生效
) else (
    echo 广播成功!
)

echo.
echo ========================================
echo PHP版本设置成功!
echo ========================================
echo.

:: 刷新当前窗口环境变量
echo 正在刷新当前窗口环境变量...
for /f "tokens=2*" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do set PATH=%%B
echo 已刷新!

echo.
echo 验证PHP版本:
php -v

echo.
echo 注意:其他已打开的程序需要重启才能识别新设置
echo 按任意键退出...
pause >nul

2. 修改配置(重要)

根据你的phpStudy实际安装路径,修改脚本中的PHP_BASE变量:

set PHP_BASE=E:\phpstudy_pro\Extensions\php

如果你的phpStudy安装在D盘或其他路径,请修改为对应的路径,例如:

set PHP_BASE=D:\phpstudy_pro\Extensions\php

3. 运行工具

右键点击保存的.bat文件,选择"以管理员身份运行"。

4. 选择版本

工具启动后会显示当前已安装的所有PHP版本,输入对应的序号即可完成设置。

5. 效果展示

核心代码解析

权限检查

net session >nul 2>&1
if %errorLevel% neq 0 (
    echo 错误:需要管理员权限!
    pause
    exit /b
)

通过net session命令检测管理员权限,确保脚本能够修改系统环境变量。

版本扫描

for /d %%i in ("%PHP_BASE%\php*") do (
    if exist "%%i\php.exe" (
        set /a INDEX+=1
        for %%f in ("%%i") do (
            echo   [!INDEX!] %%~nxf
            set "VERSION_!INDEX!=%%~nxf"
        )
    )
)

遍历phpStudy安装目录下的所有PHP版本文件夹,检测是否存在php.exe文件,并记录版本信息。

环境变量清理

for %%p in ("!SYS_PATH:;=";"!") do (
    set "path_part=%%~p"
    if "!path_part:%PHP_BASE%\php=!"=="!path_part!" (
        if not defined CLEANED_PATH (
            set "CLEANED_PATH=!path_part!"
        ) else (
            set "CLEANED_PATH=!CLEANED_PATH!;!path_part!"
        )
    )
)

清理系统PATH环境变量中所有旧的PHP路径,避免多个PHP版本路径冲突。

注册表更新

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /d "!FINAL_PATH!" /f >nul

使用reg add命令更新系统注册表中的PATH环境变量,使设置永久生效。

注意事项

  1. 管理员权限:必须使用管理员权限运行,否则无法修改系统环境变量

  2. 路径配置:根据实际phpStudy安装位置修改PHP_BASE变量

  3. 生效范围:当前窗口立即生效,其他已打开的程序需要重启才能识别新设置

  4. 系统兼容:适用于Windows 7/8/10/11系统

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐