必须先通过phpinfo()确认当前生效的php.ini路径,再同步修改upload_max_filesize、post_max_size、max_execution_time、memory_limit等参数,并重启apache才能生效。

确认当前生效的 php.ini 路径,否则所有修改都白做
很多人改完 upload_max_filesize 仍上传失败,根本原因是编辑了错误的配置文件。XAMPP 可能加载的是 C:\xampp\php\php.ini,也可能是 C:\xampp\php\php-8.2\php.ini(取决于控制面板中选中的 PHP 版本),甚至加载了系统里其他位置的副本。
实操建议:
- 在浏览器访问
http://localhost/dashboard/phpinfo.php(或自己建一个info.php,内容为<?php phpinfo(); ?>) - 搜索
Loaded Configuration File这一行,它明确告诉你 Apache 当前读取的是哪个php.ini - Windows 下用记事本打开时,注意文件可能被隐藏或需要管理员权限才能保存
必须同步修改 upload_max_filesize 和 post_max_size
只调大 upload_max_filesize 没用——PHP 在解析 POST 请求体之前,就会用 post_max_size 做第一道拦截。如果它比 upload_max_filesize 小,请求直接被丢弃,连 $_FILES 都为空。
实操建议:
- 打开
Loaded Configuration File指向的那个php.ini,搜索并修改这两行(单位必须是大写M):upload_max_filesize = 512Mpost_max_size = 512M -
post_max_size必须 ≥upload_max_filesize;若上传多个视频,总大小不能超过post_max_size - 不要写成
512或512m(小写 m 在某些 PHP 版本下不识别) - 避免设为
0或unlimited,PHP 不支持这些值,会导致配置解析失败
顺手调高超时和内存限制,防止上传中途中断
上传几 GB 的视频,耗时长、内存占用高。默认的 max_execution_time(30 秒)和 memory_limit(128M)极易触发超时或内存溢出,表现为页面空白、500 错误或“脚本执行超时”提示。
实操建议:
- 在同一个
php.ini中,一并修改:max_execution_time = 7200(2 小时)max_input_time = 7200memory_limit = 1024M - 如果使用 phpMyAdmin 上传(不推荐但偶尔需要),还需额外改它的配置:
编辑phpMyAdmin\libraries\config.default.php,找到$cfg['ExecTimeLimit'],设为0(禁用超时)
别硬扛 —— 大于 200MB 的视频,直接放弃 Web 表单上传
即使把 PHP 所有参数拉满,浏览器上传控件 + Apache + PHP 的整条链路依然脆弱:网络抖动、JS 解析卡顿、Apache 的 Timeout 设置、临时目录磁盘空间不足……都会让上传失败,且错误信息模糊。
实操建议:
- 对真正的大视频(如 >500MB),改用命令行分段处理:
先用ffmpeg或split切片,再通过后台脚本逐片接收并合并 - 最稳妥的替代方案是绕过 HTTP 上传:把视频文件放到服务器本地路径(如
C:\videos\),然后用 PHP 脚本调用copy()或move_uploaded_file()模拟“已上传”,再触发后续转码或入库逻辑 - 若必须走前端上传,务必加断点续传逻辑(如使用
Uppy或Dropzone配合后端分片接口),而不是依赖原生<input type="file">
最容易被忽略的一点:改完 php.ini 后,必须在 XAMPP 控制面板中单独点击 Apache 行右侧的 Restart —— 仅刷新网页、仅重启 MySQL、甚至重启整个电脑,都不保证新配置生效。验证方式永远是再跑一次 phpinfo(),亲自核对那几项数值是否更新。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











