phpEnv不管理MySQL配置变量,真实参数须通过MySQL客户端执行SHOW VARIABLES查询确认;配置文件路径不唯一,修改后必须重启对应实例,且PHP连接需匹配实际端口。

phpEnv 本身不管理 MySQL 配置变量,它只是个环境切换工具;真正生效的 MySQL 参数,必须进 MySQL 实例查,不能只看 phpEnv 界面或配置文件。
SHOW VARIABLES 是唯一可信的实时参数来源
phpEnv 启动的 MySQL 进程和普通 MySQL 没区别,所有运行时参数都以 MySQL 服务实际加载为准。你看到的 my.cnf 或 phpEnv 的“配置预设”只是启动参考,可能被命令行参数、动态 SET 覆盖。
- 必须用 MySQL 客户端连上去执行:
SHOW VARIABLES;或SHOW VARIABLES LIKE 'max_connections'; - 若用 phpEnv 自带的 MySQL CLI(比如
D:\phpEnv\server\mysql\mysql-8.0\bin\mysql.exe),先确保服务已启动,再运行:mysql -u root -p -e "SHOW VARIABLES LIKE '%buffer%';"
- 别依赖 phpInfo() 页面——它只显示 PHP 的 MySQL 扩展信息(如
mysqli.default_port),不反映 MySQL 服务端真实配置
phpEnv 下 MySQL 配置文件路径常被误判
phpEnv 不强制统一配置路径,不同版本/用户可能把 my.cnf 放在:D:\phpEnv\server\mysql\mysql-8.0\my.ini、D:\phpEnv\server\mysql\mysql-8.0\conf\my.cnf,甚至用户目录下。但文件存在 ≠ 生效。
- 用命令定位真正被读取的配置:
mysqld --verbose --help | grep "Default options" -A 1
- 常见有效路径优先级(从高到低):
%MYSQL_HOME%\my.ini→C:\my.ini→D:\phpEnv\server\mysql\mysql-8.0\my.ini - 修改后必须重启对应 MySQL 实例(phpEnv 控制面板里“重启 MySQL”),否则配置不加载
global/session 级参数在 phpEnv 环境中容易混淆
phpEnv 启动多个 MySQL 实例时(如 MySQL5.7 和 MySQL8.0 共存),每个实例有独立的 global 变量空间;而 PHP 脚本里用 mysqli 连接后,SET SESSION 只影响当前连接,不影响其他 PHP 请求或 CLI 会话。
立即学习“PHP免费学习笔记(深入)”;
- 查全局值(推荐脚本调用):
SELECT @@global.innodb_buffer_pool_size; - 查当前 PHP 连接的会话值:
SELECT @@session.sql_mode; - 用
SET GLOBAL修改后,旧连接仍保持原 session 值,新连接才继承新 global 默认值 - 某些参数(如
innodb_log_file_size)不支持动态修改,改了配置文件也得删日志文件+重启服务
最常被忽略的一点:phpEnv 的“MySQL 切换”只改服务进程和端口,不自动同步 php.ini 中的 mysqli.default_port 或 PDO_MYSQL_DEFAULT_PORT。如果 PHP 脚本连不上,先检查 mysqli_connect('127.0.0.1', 'root', '', 'test', 3307) 是否显式指定了正确端口——phpEnv 的 MySQL8.0 很可能跑在 3307 而非默认 3306。



















