🚀 Windows 下实现 PHP 多版本动态切换管理(适配 phpStudy)+ 一键切换工具源码分享

在日常 PHP 开发中,尤其是 Windows 系统用户,经常会遇到需要在不同 PHP 版本之间来回切换的需求,比如:

  • 某些老项目需要 PHP 5.6,而新项目需要 PHP 8.2;
  • 使用 phpStudy 管理多个 PHP 版本,切换太麻烦;
  • 想在命令行中快速 php -v 就能看到目标版本。

虽然 phpStudy 提供了基本的运行环境管理,但它并不会自动修改系统环境变量中的 PHP 路径,这会导致命令行还是默认某个版本,带来不少困扰。

于是我写了一个简单小工具,帮大家 一键切换 PHP 版本(环境变量级别) ,支持 Windows + phpStudy,并附上源码和打包方法,方便你自己用或分享给团队。

📦 工具特点

  • 💡 自动识别 phpStudy 中所有 PHP 版本(路径为 D:\phpstudy_pro\Extensions\php)
  • 📌 支持一键切换系统 PATH 中的 PHP 路径
  • 🧩 图形化界面(Tkinter 实现)
  • 🧰 可打包成 .exe 工具,免 Python 运行环境
  • 🧼 安全不破坏原系统设置

🧪 效果展示

运行截图如下(切换到 PHP 8.0.2):

🧱 环境要求

  • Windows 系统
  • 安装了 phpStudy
  • 安装 Python 3.7+(打包成 .exe 可不需要)

🧑‍💻 源码展示:php_switcher.py

python 复制代码
import os
import subprocess
import tkinter as tk
from tkinter import ttk, messagebox

# 修改为你phpStudy的PHP目录
PHP_BASE_PATH = r'D:\phpstudy_pro\Extensions\php'

def get_php_versions():
    """获取php目录下所有版本文件夹"""
    try:
        versions = [f for f in os.listdir(PHP_BASE_PATH)
                    if os.path.isdir(os.path.join(PHP_BASE_PATH, f))
                    and os.path.exists(os.path.join(PHP_BASE_PATH, f, 'php.exe'))]
        return versions
    except FileNotFoundError:
        return []

def switch_php_version(version):
    """切换系统环境变量中的PHP版本"""
    php_path = os.path.join(PHP_BASE_PATH, version)
    try:
        # 设置系统PATH(前置插入php路径)
        subprocess.run(f'setx PATH "{php_path};%PATH%" /M', shell=True)
        messagebox.showinfo("成功", f"已切换到 PHP {version},请重启命令行窗口。")
    except Exception as e:
        messagebox.showerror("错误", f"切换失败: {e}")

def on_switch():
    selected = combo.get()
    if selected:
        switch_php_version(selected)
    else:
        messagebox.showwarning("提示", "请选择一个 PHP 版本。")

# GUI
root = tk.Tk()
root.title("PHP版本切换器 - phpStudy版")
root.geometry("400x180")
root.resizable(False, False)

tk.Label(root, text="请选择要切换的 PHP 版本:", font=("Arial", 12)).pack(pady=10)

versions = get_php_versions()
combo = ttk.Combobox(root, values=versions, font=("Arial", 12))
combo.pack(pady=5)

btn = tk.Button(root, text="切换版本", command=on_switch, font=("Arial", 12), bg="#4CAF50", fg="white")
btn.pack(pady=15)

root.mainloop()

🛠 打包为 .exe 工具(可选)

如果你不想每次用 Python 运行,也可以把它打包为独立的 .exe 工具,步骤如下:

第一步:安装打包工具

推荐不要用 Microsoft Store 的 Python。请从 www.python.org/ 下载标准版。 安装完成后,在命令行运行:

bash 复制代码
pip install pyinstaller

第二步:打包

进入脚本目录,运行:

bash 复制代码
pyinstaller --onefile --noconsole php_switcher.py

打包完成后,dist/ 目录下会生成一个独立的 php_switcher.exe,双击运行即可使用。

❗ 注意事项

  • 运行后修改的是系统 PATH 环境变量,需要重启 CMD/Powershell 窗口才生效
  • 如果想还原到原始状态,只需手动将 PATH 中多余的 PHP 路径删除即可
  • 如有多个 PHP 路径存在 PATH 中,建议保留当前一个,避免混淆

📥 结语

本工具旨在解决 Windows 下 PHP 多版本频繁切换的麻烦,轻量无侵入。如果你也经常使用 phpStudy 或在 Windows 上开发 PHP 项目,希望它能帮到你。

欢迎点赞、收藏或转发给有需要的小伙伴~

相关推荐
周小码4 小时前
10分钟搭建管理后台:laravel-admin实战入门
php·laravel
dog2504 小时前
从重尾到截断流量模型的演进
开发语言·php
Johnstons7 小时前
游戏网络测试怎么做?从延迟到丢包,一套完整的游戏弱网测试方案
网络·游戏·php
楷哥爱开发11 小时前
降低网络爬虫成本:基础设施优化指南
服务器·开发语言·php
两个人的幸福14 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
BingoGo16 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack16 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户30745969820716 天前
PHP 扩展——从入门到理解
php
鹏仔先生17 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
云水一下17 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php