php文件上传大小限制需同步修改upload_max_filesize和post_max_size(后者≥前者),并重启web服务;必须通过phpinfo()确认生效的php.ini路径,且注意apache的limitrequestbody及windows 7进程残留问题。

Windows 7 上 PHP 文件上传大小限制,默认是 2MB,改不改都卡在这儿——不改就传不了图片、压缩包、日志等常见文件;改错位置或漏改某一项,照样失败。
php.ini 里必须改的两个关键配置项
PHP 的上传限制不是单点控制,而是由 upload_max_filesize 和 post_max_size 共同决定的。前者管“单个文件最大能传多大”,后者管“整个 POST 请求体最大能有多大”。哪怕你把 upload_max_filesize 改成 100M,但 post_max_size 还是默认的 8M,上传一个 5MB 的文件仍会失败(因为 HTTP POST 包含表单字段 + 文件数据,总大小超限)。
-
upload_max_filesize = 20M(建议设为你要传的最大单文件尺寸,如 20M、50M) -
post_max_size = 25M(必须 ≥upload_max_filesize,再加一点余量,比如 +5M) - 改完后一定要重启 Web 服务(如 Apache 或 Nginx),否则不生效
- 确认你改的是正在用的 php.ini:在浏览器中访问
phpinfo()页面,看 “Loaded Configuration File” 对应的路径,别改错文件
Apache 下还要检查 httpd.conf 或 .htaccess 是否有额外限制
Apache 自身可通过 LimitRequestBody 指令限制整个请求体大小,它优先级高于 PHP 设置。如果这个值太小(比如默认是 0,即不限;但某些模板或安全加固配置会设成 1048576 = 1MB),就会直接拦截请求,连 PHP 都没机会运行。
- 查
httpd.conf或虚拟主机配置里有没有LimitRequestBody行,如有且值过小(如LimitRequestBody 1048576),改成更大值或注释掉 - 如果是通过
.htaccess控制,同样检查是否有该指令;注意 Windows 7 默认不启用.htaccess覆盖功能,需确认AllowOverride All已开启 - 改完 Apache 配置后必须执行
httpd -t检查语法,再重启服务
Windows 7 系统层面对大文件上传的隐性干扰
Win7 自带的 IIS(如果你用的是 IIS+PHP)或第三方工具(如 WAMP/XAMPP)封装的 Apache,有时会受系统 TCP 缓冲区或超时策略影响。上传大文件时若中途断开、提示 500 或空白页,未必是 PHP 配置问题。
- 检查 PHP 错误日志(
error_log路径见phpinfo()),搜索 “upload”、“timeout”、“failed” 等关键词 - 临时加大
max_execution_time = 300和max_input_time = 300,避免上传过程被 PHP 强制中断 - WAMP 用户注意:右键托盘图标 → PHP → php.ini,这个快捷入口打开的才是实际生效的文件;别手动去 C:\wamp\bin\php\phpX.X.X\ 目录下乱改
- 上传测试时用 curl 命令绕过浏览器缓存干扰:
curl -F "file=@test.zip" http://localhost/upload.php,更干净地验证后端是否真通
最常被忽略的一点:改完所有配置后,别只刷新浏览器页面看效果。务必清空浏览器缓存、关掉所有 PHP 进程(任务管理器里杀掉 php-cgi.exe 或 httpd.exe)、再重新启动服务——Win7 下旧进程残留极容易导致新配置不加载。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











