XAMPP部署Moodle大文件上传失败,95%因upload_max_filesize和post_max_size未正确修改、未重启Apache或改错php.ini;须通过phpinfo()确认Loaded Configuration File路径,同步设二者为相同值(如256M),并调高max_execution_time,重启Apache后生效。

直接说结论:XAMPP 部署 Moodle 时大文件上传失败,95% 是 upload_max_filesize 和 post_max_size 没改对,或改了没重启 Apache,或压根改错了 php.ini 文件。
怎么确认当前生效的 php.ini 路径
很多人改了半天没效果,是因为编辑了错误的 php.ini。XAMPP 可能同时存在多个配置文件(如 php.ini-development、php.ini-production),而 Apache 实际加载的只有一个。
- 在浏览器访问
http://localhost/dashboard/phpinfo.php(或自己建个info.php,内容为<?php phpinfo(); ?>) - 搜索
Loaded Configuration File这一行,它明确显示 Apache 正在用哪个路径下的php.ini - 常见正确路径是:
C:\xampp\php\php.ini(Windows)或/Applications/XAMPP/xamppfiles/etc/php.ini(macOS) - 如果显示的是
none或空值,说明 Apache 没加载到任何配置,需检查 XAMPP 控制面板里 PHP 版本是否启用正常
必须同步修改的两个关键参数
仅调大 upload_max_filesize 不够——PHP 在接收 POST 数据前会先检查 post_max_size,它必须 ≥ upload_max_filesize,否则上传直接被截断,连错误提示都不给。
XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin
- 打开
Loaded Configuration File指向的那个php.ini - 搜索并修改这两行(建议设为相同值,避免混淆):
upload_max_filesize = 256Mpost_max_size = 256M - 顺手检查
max_execution_time = 300(防止大文件处理超时中断) - 改完必须点击 XAMPP 控制面板中 Apache 行右侧的 Restart —— 仅重启 MySQL 或刷新页面无效
为什么 phpMyAdmin 导入大 SQL 还是失败
即使调高了 PHP 上传限制,phpMyAdmin 自身还有前端限制和内存瓶颈。100MB+ 的 SQL 文件极易触发 2003 - Can't connect to MySQL server 或空白页,这不是数据库问题,而是 Web 界面扛不住。
- 优先放弃 phpMyAdmin 上传,改用命令行导入:
cd C:\xampp\mysql\binmysql -u root -p moodle_db < C:\backup\moodle.sql - 确保 MySQL 服务已启动(XAMPP 面板中 MySQL 显示 Running)
- 若提示
'mysql' is not recognized,要么把C:\xampp\mysql\bin加入系统 PATH,要么直接在该目录下运行命令 - 该方式不经过 PHP,不受
upload_max_filesize限制,也绕过了 phpMyAdmin 的 HTML 表单解析开销
上传后 Moodle 仍报“文件过大”怎么办
Moodle 本身有三层上传限制,PHP 层只是最底层。即使 php.ini 改对了,上层配置没调也会卡住。
- 登录 Moodle 后台 →
Site administration → Security → Site security settings - 检查
Maximum uploaded file size下拉菜单,它不能超过 PHP 层设置的值(比如 PHP 设了 256M,这里选 128M 可以,选 512M 就无效) - 课程级或活动级上传限制(如某个作业设置最大 10M)同样受此约束,不能越级突破
- 若使用 Nginx 反代(非 XAMPP 默认),还需额外检查
client_max_body_size,但 XAMPP 默认用 Apache,此项可忽略
最容易被忽略的一点:改完 php.ini 后没关杀毒软件或 Windows Defender 实时扫描——它们可能锁定文件导致 Apache 无法重读配置;建议临时禁用或用管理员权限运行 XAMPP 控制面板再重启。

















