这是因为 PHP 配置文件 php.ini中的上传大小限制小于你要上传的文件大小。
排查与解决:
查看当前限制值:phpinfo()页面搜索 upload_max_filesize和 post_max_size
修改 php.ini 配置:
; 允许上传的最大文件大小(如 64M)upload_max_filesize = 64M; POST 数据最大大小(必须 >= upload_max_filesize)post_max_size = 70M; 最大并发上传文件数max_file_uploads = 20; 脚本最大执行时间(大文件上传可能需要更长时间)max_execution_time = 300memory_limit = 128M
修改后重启 Web 服务:sudo systemctl restart php-fpm或 Apache
前端也要同步限制:HTML 表单中 enctype="multipart/form-data",JS 可做客户端预检
Nginx 额外限制:若使用 Nginx 代理,还需检查 client_max_body_size:
client_max_body_size 70M;
💡 调试技巧:在 $_FILES['file']['error']返回值中,0 表示成功,1 表示超过 upload_max_filesize,2 表示超过表单 MAX_FILE_SIZE,3 表示部分上传,4 表示没有文件被上传。