古之欲明明德于天下者,先治其国;欲治其国者,先齐其家;欲齐其家者,先修其身;欲修其身者,先正其心;欲正其心者,先诚其意;欲诚其意者,先致其知,致知在格物。物格而后知至,知至而后意诚,意诚而后心正,心正而后身修,身修而后家齐,家齐而后国治,国治而后天下平。–《礼记·大学》
Windows11多PHP+多MySQL版本本地开发环境方案对比
一、首选:Laragon(最推荐,多版本管理最强)
优势(完美匹配你的需求)
- 多PHP一键切换:同时存放 PHP5.6/7.1/7.4/8.0/8.1/8.2/8.3,全局切换或单个项目绑定指定PHP版本
- 多MySQL/MariaDB共存:可并行安装 MySQL5.7、MySQL8.0、MariaDB10.3/10.6,不同端口独立运行,互不冲突
- 内置 Nginx+Apache 双服务器,一键切换,自动配置虚拟主机(域名
xxx.test) - 绿色免安装,不污染系统环境,全部文件统一在
Laragon目录,重装系统备份文件夹即可恢复 - 自动生成SSL证书、快速创建数据库、命令行集成,兼容FastAdmin、ThinkPHP全版本
- 占用资源低,Windows11兼容性极佳,无PhpStudy常见端口占用、权限报错
多版本使用方式
- 全局PHP:菜单栏一键切换全局版本
- 项目独立PHP:修改项目
.env/ 单独Nginx配置指定PHP-CGI端口,实现一个项目固定PHP7.4,另一个PHP8.1 - MySQL多实例:每个数据库实例分配不同端口(3306、3307、3308),同时启动
缺点
可视化面板简单,功能不如PhpStudy丰富,纯轻量工具。
二、备选:PhpStudy Pro(图形化易用,新手友好)
优势
- 图形界面完善,可视化管理所有服务、数据库、扩展
- 一键下载任意PHP、MySQL、Redis、Nginx/Apache,可视化切换版本
- 虚拟主机可视化配置、数据库管理、数据库备份、站点管理一体化
- 国内下载源速度快,中文界面,适合不想敲命令的开发者
痛点(多版本场景短板)
- 同一时间只能启动一个MySQL实例,无法同时跑MySQL5.7和8.0,切换需要停止重建
- 高并发项目容易出现FastCGI 10060/10061超时报错(你之前遇到的Nginx超时问题高发)
- 部分版本依赖VC运行库,Windows11偶尔权限、防火墙拦截问题
- 安装版,注册表写入多,卸载不干净容易残留端口占用
适合:项目PHP版本不同、但MySQL版本统一的场景;如果需要同时跑多个MySQL不推荐为主力。
三、专业方案:Docker(完全隔离,生产环境对齐)
适用场景
项目依赖差异极大、需要和线上Linux环境一致、同时运行N多PHP/MySQL版本、避免Windows环境差异BUG
优点
- 容器完全隔离:每个项目一套独立PHP+MySQL,端口互不干扰,环境和线上一致
- 自定义镜像:PHP5.6~8.4、MySQL5.6/5.7/8.0自由组合,
.docker-compose.yml一键启动项目 - 无Windows兼容性坑,不存在VC库、文件大小写、路径分隔符问题
- 团队统一环境,复制配置即可共享开发环境
缺点
- 入门有学习成本,需要懂基础Docker命令
- Windows11需要开启WSL2,磁盘读写速度比本地集成环境慢一点
- 小项目启动稍繁琐,纯本地快速开发不如Laragon便捷
四、小众方案:XAMPP / WAMP(不推荐多版本需求)
- XAMPP:仅支持单PHP单MySQL,切换版本需要覆盖文件,多项目兼容极差
- WAMP:仅Windows,PHP多版本切换尚可,但MySQL只能单实例,更新停滞,不再推荐
Laragon添加预装外的php/mysql版本
一、核心下载规则(必看,否则报错)
1. 下载地址
2. 包选择硬性标准
- 系统Windows11 x64 → 选 x64
- Laragon Nginx/FPM 必须下载 Non Thread Safe (NTS)
- VC运行库匹配:
- PHP5.6 ~ PHP7.1:VC14
- PHP7.2 ~ PHP7.4:VC15
- PHP8.0+:VS16
- 下载后缀
.zip绿色压缩包,不要msi安装版
示例可用包名:
- php-7.4.33-Win32-vc15-x64-nts.zip
- php-8.0.30-Win32-vs16-x64-nts.zip
- php-5.6.40-Win32-vc14-x64-nts.zip
二、安装步骤
关闭Laragon全部服务(停止所有)
进入目录
你的laragon路径\bin\php\直接解压下载的PHP压缩包到此目录,完整文件夹不要改名
目录结构示例:1
2
3
4
5
6laragon/
bin/
php/
php-7.4.33-Win32-vc15-x64-nts
php-8.0.30-Win32-vs16-x64-nts
php-8.1.xx-Win32-vs16-x64-nts (自带原版)重启Laragon托盘程序(完全退出重开)
右键托盘菜单 → PHP → Version,下拉列表自动出现新增的7.x/8.0版本,点击切换即可
三、依赖VC运行库(90%启动失败根源)
Windows11默认缺少旧版VC,不装会直接提示php-cgi.exe无法启动:
- VC14(5.6~7.1):Visual C++ Redistributable 2015
- VC15(7.2~7.4):Visual C++ Redistributable 2017
- VS16(8.0+):Visual C++ Redistributable 2019/2022
直接微软官网下载x64版本安装传送门,重启电脑生效。
四、项目独立绑定指定PHP版本(多项目不同PHP需求)
全局切换只能统一环境,你多项目混用版本推荐站点单独指定:
- 菜单 → Sites → 打开当前站点Nginx配置
- 修改fastcgi_pass端口,不同PHP对应独立端口:
1 | # PHP7.4 固定端口9074 |
- Laragon菜单
PHP > Quick settings > PHP-FPM ports可自定义各版本FPM端口,保存后重载Nginx,每个项目永久固定PHP版本,不用来回全局切换。
五、配套多MySQL旧版安装(同理)
你需要MySQL5.7共存8.0操作逻辑完全一致:
- 下载免安装绿色MySQL zip(5.7 x64)
- 解压到
laragon/bin/mysql/ - 菜单MySQL > Version切换,启动时会自动分配独立端口(3306/3307/3308),多数据库可同时运行互不冲突。
六、备选方案(嫌手动下载麻烦)
- 降级Laragon Full 2025 v8.1.0
旧版内置Quick Add一键下载PHP5.6~8.3,不用手动找包,兼容性完全一致,官网可下载历史包。 - Docker WSL2
每个项目容器独立PHP+MySQL,完全隔离,适合线上对齐,但有学习成本。
七、常见报错解决
- 菜单看不到新增PHP
- 完全退出Laragon托盘,重新打开
- 文件夹不要中文/空格,保持原版解压命名。
- 切换PHP后502 Bad Gateway:
- 缺少对应VC运行库
- 下载成TS(Thread Safe)版本,必须NTS。
- FastCGI 10060超时
- 站点单独绑定对应PHP的FPM端口,不要混用全局端口。
Laragon 同时运行 MySQL5.7 + MySQL8.0 完整教程
核心原理
Laragon 默认只能单实例启动MySQL(同一时间只能开一个版本),想两个版本同时后台并行运行,必须:
- 两个MySQL目录完全独立(bin、data、my.ini分开)
- 分配不同端口(5.7=3306,8.0=3307)
- 分别注册独立Windows服务(MySQL57 / MySQL80)
- Laragon主面板只用其中一个,另一个通过系统服务启动
一、提前准备两个MySQL包
1. 放入Laragon标准目录
路径:laragon\bin\mysql,解压两个完整zip包:
mysql-5.7.44-winx64(5.7)mysql-8.0.39-winx64(8.0)
2. 分别创建独立数据目录(关键,不能共用data)
1 | laragon\data\mysql57 # 5.7数据 |
二、分别配置 my.ini(端口隔离)
① MySQL5.7 配置:laragon\bin\mysql\mysql-5.7.44-winx64\my.ini
1 | [mysqld] |
② MySQL8.0 配置:laragon\bin\mysql\mysql-8.0.39-winx64\my.ini
1 | [mysqld] |
三、管理员CMD初始化+注册独立服务
1. 初始化 MySQL5.7
1 | cd C:\laragon\bin\mysql\mysql-5.7.44-winx64\bin |
2. 初始化 MySQL8.0
1 | cd C:\laragon\bin\mysql\mysql-8.0.39-winx64\bin |
四、同时启动两个数据库
方式1:CMD命令启停(推荐并行)
1 | # 启动 |
方式2:Laragon面板管理其中一个
Laragon菜单 → MySQL → Version 切换想用的版本(默认3306的5.7),点Start MySQL;
MySQL8.0(3307)只能通过系统服务启动,Laragon面板无法同时控制两个。
五、客户端连接区分端口
- MySQL5.7:
127.0.0.1:3306 - MySQL8.0:
127.0.0.1:3307
Navicat/PHP项目连接8.0必须手动填写端口3307;
PHP代码示例:
1 | // 5.7 |
六、备选方案:Profile 切换(不能同时运行,仅快速切换)
如果不需要同时跑,只是切换版本开发,用Laragon自带Profile:
- Menu → Profile → Create New Profile
- 新建两个配置:
env57(绑定MySQL5.7)、env80(绑定MySQL8.0) - 切换Profile会自动重启对应MySQL,同一时间只能启动一个版本
常见报错解决
- 端口占用:确认两个my.ini port不同,关闭其他本地MySQL服务
- 服务注册失败:CMD必须右键「以管理员身份运行」
- data目录报错:必须手动新建mysql57/mysql80空文件夹,不要共用
- 8.0连接报错caching_sha2_password:my.ini添加
default_authentication_plugin = mysql_native_password,重置root密码
Laragon 伪静态完整配置(分 Apache / Nginx 两种环境)
一、Apache(Laragon默认)配置伪静态
方式1:项目根目录新建 .htaccess(最简单,推荐ThinkPHP/Laravel/Wordpress)
- 进入你的项目目录(例:
D:\laragon\www\demo,框架项目放public文件夹) - 新建文件命名
.htaccess(Windows新建txt,保存后重命名,文件名带点) - 复制对应框架规则:
1)ThinkPHP 5/6(Apache)
1 | <IfModule mod_rewrite.c> |
2)Laravel(public目录下)
1 | <IfModule mod_rewrite.c> |
3)通用PHP/WordPress
1 | <IfModule mod_rewrite.c> |
方式2:Apache全局虚拟主机开启AllowOverride(解决.htaccess不生效404)
很多时候放了.htaccess还是404,是因为目录没开启重写权限:
- 打开路径:
D:\laragon\etc\apache2\sites-enabled\00-default.conf - 找到
<Directory "D:/laragon/www">,修改为:
1 | <Directory "D:/laragon/www"> |
- 重启Laragon全部服务
检查Apache重写模块是否开启
打开
D:\laragon\bin\apache\apache2.4.x\conf\httpd.conf,确保该行没有#注释:
1 | LoadModule rewrite_module modules/mod_rewrite.so |
二、Nginx 环境伪静态(Nginx不支持.htaccess,必须改站点conf)
步骤1:打开站点配置文件
路径:D:\laragon\etc\nginx\sites-enabled\00-default.conf
如果你自定义了本地域名(如tp6.test),编辑对应域名conf文件
步骤2:在 server{} 内部添加伪静态规则
找到 location / {},替换/添加对应代码:
1)ThinkPHP 专用Nginx规则(兼容tp5/tp6)
1 | location / { |
2)Laravel Nginx规则(入口在public)
1 | location / { |
3)通用WordPress/普通PHP
1 | location / { |
步骤3:保存后重启Laragon
托盘右键 → Stop All → Start All
三、统一重启&验证是否生效
- 完全停止再启动(只Reload无效)
- 新建测试链接,不带index.php访问,正常打开=伪静态成功
- 排查报错:
- 404:规则不匹配 / Nginx conf写错 / Apache AllowOverride 不是All
- 500:.htaccess语法错误 / Nginx rewrite格式错误
- 依旧要带index.php访问:服务没重启、规则放错目录(框架项目要放public)
四、常见踩坑
- ThinkPHP项目入口在public:
.htaccess必须丢到public文件夹,不是项目根目录 - Windows创建.htaccess:新建文本文档,另存为,文件名填
.htaccess,编码选UTF-8 - Nginx改完配置必须重启服务,没有.htaccess缓存机制
- 多PHP切换不影响伪静态,伪静态由Apache/Nginx控制,和PHP版本无关
Laragon使用问题汇总
一、列表
- MySQL配置文件被还原,如同时安装了8.4.3和8.4.10,则8.4.10的配置文件如datadir=”D:/Laragon/data/mysql-8.4.10”会被还原为:datadir=”D:/Laragon/data/mysql-8.4”
Laragon有自动生成/覆盖my.ini机制:每次切换MySQL版本、重启MySQL、点「重新生成服务」时,Laragon会根据当前选中的MySQL主版本号自动重写datadir:如安装的文件夹是mysql-8.4.10,主版本号为8.4
解决方案:
方案1:主版本号只保留一个,如8.4.3和8.4.10,只保留8.4.10(根据实际情况而定)
方案2:锁住版本目录内my.ini(阻止自动覆盖,无需新建 etc)
方案3:创建用户自定义模板usr/tpl(官方标准方案,不会被重置)
停止全部服务
手动创建目录:D:\Laragon\usr\tpl\mysql\
复制bin/mysql/mysql-8.4.10/my.ini到上面目录,改名为my.ini.tpl
用管理员打开 D:\Laragon\usr\tpl\mysql\my.ini.tpl,修改 datadir:
1
2
3
4
5
6[mysqld]
basedir = "{mysql.dir}"
datadir = "D:/Laragon/data/mysql-8.4.10"
port = 3306
character-set-server = utf8mb4
collation-server = utf8mb4_0900_ai_ci保存文件,托盘右键 MySQL → 重新生成服务
启动 MySQL,无论重启、切换版本,datadir 永久固定不会被截断还原
php安装redis扩展
- 确定php版本:通过laragon查看
- 校验php版本:php -i | findstr “Thread Safety”
- 下载扩展:https://pecl.php.net/package/redis,解压
- 复制php_redis.dll至对应版本php的ext目录
- 开启扩展
- 方式1:通过laragon—我用的v8.6.1勾选后不生效
- 方式2:手动修改php.ini
- 重启全部服务
- 验证
- 方式1:php -m | findstr redis
- 方式2:通过phpinfo()
伪静态