当前位置:首页 > PHP教程 > php环境安装 > 列表

XAMPP修改PHP内存限制 XAMPP调整upload_max_filesize

发布:smiling 来源: PHP粉丝网  添加日期:2026-05-23 18:34:03 浏览: 评论:0 

PHP配置修改后不生效,核心在于精准定位Apache实际加载的php.ini路径(通过phpinfo()确认)、同步调整upload_max_filesize与post_max_size、并重启Apache服务;超大SQL文件应优先使用mysql命令行导入。

直接改 php.ini 里的 memory_limit 和 upload_max_filesize 是对的,但改完不生效、改了还是报错、或者导入中途崩溃——这些都不是配置写错了,而是没踩准生效条件或忽略了协同参数。

确认你改的是 Apache 实际加载的 php.ini

很多人在 C:\xampp\php\php.ini 里改了,但 Apache 加载的其实是另一个文件。XAMPP 控制面板右上角可能切换过 PHP 版本(比如 PHP 8.2 → 8.3),每个版本对应独立的 php.ini;Windows 下还可能因权限问题被系统重定向到临时路径。

访问 http://localhost/dashboard/phpinfo.php,搜索 Loaded Configuration File,看它指向哪条完整路径

如果显示的是 C:\xampp\php\php.ini,但你编辑的是 php.ini-development 或桌面副本,就白改了

用管理员权限打开记事本(或 VS Code)再编辑,避免 Windows 隐藏写保护

upload_max_filesize 和 post_max_size 必须同步调大

upload_max_filesize 只管单个文件大小,post_max_size 管整个 POST 请求体(含文件 + 表单字段)。只要后者更小,上传就会在 PHP 解析层就被拦截,错误提示还是“文件超出上传大小限制”。

设成相同值最稳妥,例如:upload_max_filesize = 512M 和 post_max_size = 512M

不要只改一个:比如把 upload_max_filesize 改到 1G,但 post_max_size 还是默认 8M,照样失败

单位必须带字母(M 或 G),写成 512 或 512m(小写)可能被忽略

光调上传限制还不够:memory_limit 和 max_execution_time 得跟上

phpMyAdmin 导入时会把整个 SQL 文件读进内存解析,再逐行执行。哪怕上传成功,脚本也可能在执行阶段因超时或内存溢出中断,表现为白屏、500 错误或 “Script timeout passed”。

memory_limit 至少设为 512M,超大文件建议 1024M

max_execution_time = 600(10 分钟),避免脚本被强制终止

max_input_time = 600,防止 POST 数据解析阶段超时(尤其网络慢或文件含 BLOB)

改完这四行后,**必须重启 Apache**——只点 MySQL 的 Restart 没用

超过 200MB 的 SQL 文件,别硬扛 phpMyAdmin

phpMyAdmin 是 Web 界面工具,不是数据库导入引擎。它把 SQL 全加载进 PHP 进程再模拟执行,遇到百万级 INSERT 或复杂视图定义极易崩溃,即使所有 PHP 参数都拉满也救不了。

优先用命令行:mysql -u root -p mydb < C:\backup\dump.sql

确保 MySQL 正在运行,终端进入 C:\xampp\mysql\bin 目录再执行

如果提示 mysql 不是内部命令,就把该路径加进系统 PATH,或直接在该目录下开 CMD

这条命令完全绕过 PHP,不受任何 upload_max_filesize 或超时限制,也快得多

真正容易被忽略的点是:Apache 加载的 php.ini 路径、post_max_size 与 upload_max_filesize 的协同关系、以及 phpMyAdmin 自身的架构瓶颈——它不是为导入几百 MB 数据设计的。命令行才是 XAMPP 下处理大 SQL 文件的默认路径,不是备选方案。

Tags: XAMPP修改PHP内存限制 upload_max_filesize

分享到: