发布于2026-07-07 阅读(0)
扫一扫,手机访问
在phpEnv这个Windows集成环境里,MySQL的配置方式和普通服务器不太一样。它不走SET GLOBAL那条捷径,因为配置文件被封装在了自己的地盘里。想改max_allowed_packet?唯一靠谱的路子就是找到my.ini,动手改,然后重启服务。
phpEnv不像Linux那样用my.cnf,它老老实实走Windows传统的my.ini路线。常见的几个窝点如下:
C:\phpEnv\mysql\my.ini —— 这是最常遇见的主配置文件。C:\phpEnv\config\mysql\my.ini —— 有些版本会把配置单独抽到config目录下。C:\phpEnv\mariadb\my.ini。动手之前,最好先确认一下MySQL进程到底加载的是哪个文件。最直接的办法:在phpEnv控制面板里点「MySQL → 配置」,或者打开命令行跑一句:
mysqld --verbose --help | findstr "Default options"
看输出结果里,哪个路径后面跟着my.ini,那就是它了。
my.ini的正确姿势关键一步:这个配置必须写在[mysqld]段下面,而不是[client]或[mysql]。后两者只管客户端工具,服务端收包的大小根本不鸟它们。
[mysqld] max_allowed_packet = 128M
这里有几个容易栽跟头的地方:
K、M、G就行,比写一串数字(比如134217728)安全得多。MySQL内部会自动帮你对齐到1024的倍数。1G。phpEnv多半装在配置不高的Windows机器上,每个连接都会预分配这块内存。开10个连接,虚拟内存就吃掉10GB,Out of memory或者服务卡死几乎是板上钉钉的事。[client]段也加上max_allowed_packet = 128M。不然phpMyAdmin自己就会把数据包截断。phpEnv的MySQL是通过Windows服务运行的,所以问题通常出在:
net stop mysql && net start mysql。C:\phpEnv\php\php.ini去了,那是PHP的配置文件,跟MySQL八竿子打不着。改完想验证?连进MySQL,执行一下SELECT @@global.max_allowed_packet;。返回值应该是你设的字节数(比如134217728),而不是默认的4194304。
就算MySQL服务端调大了,PHP的MySQLi或PDO连接也可能被驱动默认行为卡住,尤其是在批量插入大JSON或者读取长文本的时候。
SET SESSION max_allowed_packet = 134217728。$pdo->exec("SET SESSION max_allowed_packet = 134217728");。[client]段配好了就行,不用额外改PHP代码。真正让人头疼的是那些用了连接池或长连接的应用,比如Lara vel、Swoole。它们不会自动继承新配置,必须在连接建立后主动发一句SET SESSION。否则第一次请求可能正常,后续复用旧连接时,冷不丁就给你来一个MySQL server has gone away。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8