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

news2025/4/18 21:56:39

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

  • 📦 工具特点
  • 🧪 效果展示
  • 🧱 环境要求
  • 🧑‍💻 源码展示:php_switcher.py
  • 🛠 打包为 .exe 工具(可选)
    • 第一步:安装打包工具
    • 第二步:打包
  • ❗ 注意事项
  • 📥 结语

在日常 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):
php版本切换器截图

🧱 环境要求

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

🧑‍💻 源码展示:php_switcher.py

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。请从 https://www.python.org/ 下载标准版。
安装完成后,在命令行运行:

pip install pyinstaller

第二步:打包

进入脚本目录,运行:

pyinstaller --onefile --noconsole php_switcher.py

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

❗ 注意事项

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

📥 结语

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2337562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ReportLab 导出 PDF(图文表格)

ReportLab 导出 PDF(文档创建) ReportLab 导出 PDF(页面布局) ReportLab 导出 PDF(图文表格) 文章目录 1. Paragraph(段落)2. Table(表格)3. VerticalBarChart&#xff0…

yolov8复现

Yolov8的复现流程主要包含环境配置、下载源码和验证环境三大步骤: 环境配置 查看电脑状况:通过任务管理器查看电脑是否有独立显卡(NVIDIA卡)。若有,后续可安装GPU版本的pytorch以加速训练;若没有&#xff0…

RestSharp和Newtonsoft.Json结合发送和解析http

1.下载RestSharp和Newtonsoft.Json 2编写ApiRequest和ApiResponse和调用工具类HttpRestClient 请求模型 /// <summary>/// 请求模型/// </summary>public class ApiRequest{/// <summary>/// 请求地址/api路由地址/// </summary>public string Route {…

【Pytorch之一】--torch.stack()方法详解

torch.stack方法详解 pytorch官网注释 Parameters tensors&#xff1a;张量序列&#xff0c;也就是要进行stack操作的对象们&#xff0c;可以有很多个张量。 dim&#xff1a;按照dim的方式对这些张量进行stack操作&#xff0c;也就是你要按照哪种堆叠方式对张量进行堆叠。dim的…

数据中台(大数据平台)之数据资源目录

数据资源目录是数据管理的账本&#xff0c;是数据应用的基础&#xff0c;更是是数据治理成果的体现&#xff0c;因此数据中台产品应提供数据资源目录编制、发布、资源挂载、下架的管理能力。 1.数据资源目录分类 资源目录能够支持基于业务特点创建和维护基础目录分类和特色目…

【随身WiFi】随身WiFi Debian系统优化教程

0.操作前必看 本教程基于Debian系统进行优化&#xff0c;有些操作对随身WiFi来说可能会带来负优化&#xff0c;根据需要选择。 所有操作需要在root用户环境下运行&#xff0c;否则都要加sudo 随身wifi Debian系统&#xff0c;可以去某安的随声WiFi模块自行搜索刷机 点赞&am…

JAVA Web_定义Servlet2_学生登录验证Servlet

题目 页面StudentLogin.html中有一HTML的表单代码如下&#xff1a; <form action"studentLogin" method"post">学生姓名&#xff1a;<input type"text" name"stuName" value""><br>登录密码&#xff1a;…

Unity入门笔记(缘更)

内容来源SiKi学院的Luna’s Fantasy 文章目录 一、基础知识1.准备2.基础知识1.层级(Layer)2.轴心点3.预制体(Prefab)4.刚体组件(Rigidbody)5.碰撞器组件(BoxCollider) 二、代码1.移动 一、基础知识 1.准备 Unity安装&#xff1a; https://unity.cn 2.基础知识 1.层级(Layer…

【Python】用Python写一个俄罗斯方块玩玩

【Python】用Python写一个俄罗斯方块玩玩 一、引言1.成品效果展示 二、思考准备1.思考设计2.代码设计2.1 游戏页面2.2 控件设计2.2.1 方块生成2.2.2 方块碰撞2.2.3 方块消融2.2.4 游戏主循环2.2.5 游戏窗口 三、游戏完整版 一、引言 今日看到侄子在玩游戏&#xff0c;凑近一看…

记录一次生产中mysql主备延迟问题处理

登录库&#xff1a; mysql -uXXXX -pXXXX -P3306 -hXXXXXX -A 备库上执行&#xff1a;show slave status\G 查看 seconds_Behind_Master&#xff0c;延迟 2705s&#xff0c;而且还一直在增加。 SHOW CREATE TABLE proc_i_income_temp; -- 查看表的结构 show index from proc…

ffmpeg无损转格式的命令行

将ffmpeg.exe拖入命令行窗口 c:\users\zhangsan>D:\ffmpeg-2025-03-11\bin\ffmpeg.exe -i happy.mp4 -c:v copy -c:a copy 格式转换后.mkv -c:v copy 仅做拷贝视频,不重新编码 -c:a copy 仅做拷贝音频 ,不重新编码

强化学习算法系列(五):最主流的算法框架——Actor-Critic算法框架

强化学习算法 &#xff08;一&#xff09;动态规划方法——策略迭代算法(PI)和值迭代算法(VI) &#xff08;二&#xff09;Model-Free类方法——蒙特卡洛算法(MC)和时序差分算法(TD) &#xff08;三&#xff09;基于动作值的算法——Sarsa算法与Q-Learning算法 &#xff08;四…

设计模式(结构型)-桥接模式

目录 摘要 定义 类图 角色 具体实现 优缺点 优点 缺点 使用场景 使用案例 JDBC 和桥接模式 总结 摘要 在软件开发领域&#xff0c;随着系统规模和复杂性的不断攀升&#xff0c;如何设计出具有良好扩展性、灵活性以及可维护性的软件架构成为关键挑战。桥接模式作为一…

【MySQL】MySQL数据库 —— 简单认识

目录 1. 数据库的介绍 1.1 什么是数据库 1.2 数据库和数据结构之间关系 2. 数据库分类 2.1 关系型数据库&#xff08;RDBMS&#xff09; 2.2 非关系型数据库 2.3 区别 一些行内名词简单解释&#xff1a; 3. 关于mysql 主要学什么 4. MySQL中重要的概念 4.1 概念 4…

RNN - 语言模型

语言模型 给定文本序列 x 1 , … , x T x_1, \ldots, x_T x1​,…,xT​&#xff0c;语言模型的目标是估计联合概率 p ( x 1 , … , x T ) p(x_1, \ldots, x_T) p(x1​,…,xT​)它的应用包括 做预训练模型&#xff08;eg BERT&#xff0c;GPT-3&#xff09;生成本文&#xff…

过拟合、归一化、正则化、鞍点

过拟合 过拟合的本质原因往往是因为模型具备方差很大的权重参数。 定义一个有4个特征的输入&#xff0c;特征向量为,定义一个模型&#xff0c;其只有4个参数&#xff0c;表示为。当模型过拟合时&#xff0c;这四个权重参数的方差会很大&#xff0c;可以假设为。当经过这个模型后…

【python画图】:从入门到精通绘制完美柱状图

目录 Python数据可视化&#xff1a;从入门到精通绘制完美柱状图一、基础篇&#xff1a;快速绘制柱状图1.1 使用Matplotlib基础绘制1.2 使用Pandas快速绘图 二、进阶篇&#xff1a;专业级柱状图定制2.1 多系列柱状图2.2 堆叠柱状图2.3 水平柱状图 三、专业参数速查表Matplotlib …

基础知识:离线安装docker、docker compose

(1)离线安装docker 确认版本:Ubuntu 18.04 LTS - bionic 确认架构:X86_64 lsb_release -a uname -a 官方指南:https://docs.docker.com/engine/install/ 选择Ubuntu,发现页面上最低是Ubuntu20.04, 不要紧

畅游Diffusion数字人(27):解读字节跳动提出主题定制视频生成技术Phantom

畅游Diffusion数字人(0):专栏文章导航 前言:主题定制视频生成,特别是zero-shot主题定制视频生成,一直是当前领域的一个难点,之前的方法效果很差。字节跳动提出了一个技术主题定制视频生成技术Phantom,效果相比于之前的技术进步非常显著。这篇博客详细解读一下这一工作。 …

《Adaptive Layer-skipping in Pre-trained LLMs》- 论文笔记

作者&#xff1a;Xuan Luo, Weizhi Wang, Xifeng Yan Department of Computer Science, UC Santa Barbara xuan_luoucsb.edu, weizhiwangucsb.edu, xyancs.ucsb.edu 1. 引言与动机 1.1 背景 LLM 的成功与挑战: 大型语言模型 (LLMs) 在翻译、代码生成、推理等任务上取得巨大成…