必须修改 phpEnv 中 MySQL 的 my.ini 配置文件才能调整刷盘策略,需在 [mysqld] 段添加 innodb_flush_log_at_trx_commit=1、sync_binlog=1 等参数,并重启 MySQL 服务后通过 SHOW VARIABLES 验证生效。

phpEnv 里改不了 MySQL 刷盘策略,得进 MySQL 配置文件
phpEnv 是个 Windows 下的 PHP + MySQL + Apache 一键集成环境,它本身不提供图形化配置界面去调 innodb_flush_log_at_trx_commit 这类底层参数。所有刷盘行为由 MySQL 实例自己控制,修改必须落在 my.ini(Windows)或 my.cnf(Linux)上 —— phpEnv 启动的 MySQL 进程读的就是这个文件。
找到并编辑 phpEnv 自带的 my.ini 文件
默认路径通常是:C:\phpEnv\mysql\my.ini(具体看你的安装目录)。用记事本或 VS Code 打开,在 [mysqld] 段落末尾添加或修改以下几行:
-
innodb_flush_log_at_trx_commit = 1(强一致性,电商/支付必选) -
sync_binlog = 1(配合上面,构成“双一”,主从数据强一致) -
innodb_flush_method = O_DIRECT(SSD 环境下推荐,避免 OS cache 双重缓存) -
innodb_log_file_size = 512M(避免 redo log 太小引发频繁 checkpoint)
改完保存,**必须重启 phpEnv 的 MySQL 服务**(不是只重启 Apache),否则参数不生效。可以在 phpEnv 控制面板里点“重启 MySQL”,或命令行执行:net stop mysql → net start mysql。
验证是否生效:别只信配置文件,要看运行时值
连上 MySQL(phpEnv 自带的 phpMyAdmin 或命令行)执行:
立即学习“PHP免费学习笔记(深入)”;
SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit';
返回值应为 1(或你设的 0/2)。再查:
SHOW VARIABLES LIKE 'sync_binlog';
确认是 1。如果值还是默认 1 但你改了配置却没生效,大概率是:
- 改错了文件(比如改了
my-default.ini而非实际加载的my.ini) - MySQL 启动时没读这个文件(用
mysqld --verbose --help | findstr "Default options"查加载顺序) - 配置项写在了
[client]段而不是[mysqld]段
Windows 下容易被忽略的权限和路径问题
Windows 对 C:\phpEnv 目录常有写入限制。如果你用普通用户身份编辑 my.ini 后保存失败,或保存后内容消失,说明权限不足。解决办法:
- 右键记事本 → “以管理员身份运行”,再打开并保存
my.ini - 或者把整个
C:\phpEnv移到非系统盘(如D:\phpEnv),避开 UAC 干预 - 检查文件是否被设置为“只读”(属性 → 去掉勾选)
另外,phpEnv 默认用的是 MySQL 5.7 或 8.0 的精简版,某些高级参数(如 innodb_io_capacity)可能不支持,报错就删掉那行 —— 不要硬加。



















