Dropzone无法上传超5M图片,PHP配置调整后仍受限问题排查
从你描述的情况来看,Dropzone显示的「文件大小不得超过5000千字节」明显是服务器端返回的限制,而非前端问题——毕竟调小Dropzone的maxFilesize能生效,调大就被打回原形,说明后端有个隐形的5M限制在起作用。结合你已经检查过php.ini和.htaccess,给你几个具体的排查方向:
1. 确认你修改的php.ini是Apache正在使用的配置文件
有时候我们会不小心改到CLI版本的php.ini(比如/etc/php/7.2/cli/php.ini),但Apache用的是单独的配置文件。最快的验证方法:
- 在网站根目录创建一个
phpinfo.php文件,内容如下:<?php phpinfo(); ?> - 访问这个文件,找到
Loaded Configuration File项,确认是不是你修改的/etc/php/7.2/apache2/php.ini;同时查看upload_max_filesize、post_max_size、memory_limit这些参数的实际值是否和你设置的一致。 - 如果实际值还是5M,要么是你没重启Apache(执行
sudo systemctl restart apache2),要么就是改了错误的配置文件。
2. 检查是否有额外的PHP配置文件覆盖主设置
很多PHP环境会在conf.d目录加载额外的配置文件,这些文件的优先级可能高于主php.ini。你可以看看/etc/php/7.2/apache2/conf.d/目录下有没有类似upload.ini或者自定义配置文件,里面可能写了upload_max_filesize = 5M这类限制。
- 同样在
phpinfo的Additional .ini files parsed部分,能看到所有加载的额外配置文件,逐个检查这些文件里的上传相关参数即可。
3. 排查Apache的LimitRequestBody指令
这是Apache服务器层面的限制,优先级比PHP设置更高。虽然你说.htaccess里没有,但这个指令可能写在Apache主配置文件(比如/etc/apache2/apache2.conf)或者你的网站虚拟主机配置文件里:
LimitRequestBody的单位是字节,5000千字节对应5242880字节(510241024)。如果配置里有LimitRequestBody 5242880,就会强制限制上传大小。- 解决方法:在你的虚拟主机配置里添加
LimitRequestBody 0(0表示不限制),或者把值改成你需要的大小(比如20M对应20971520),之后重启Apache。
4. 验证临时目录的可用性
PHP上传文件时会先把文件存到临时目录(默认是/tmp),如果临时目录空间不足或者权限不对,也可能触发类似错误。你可以完整执行df -h命令,查看/tmp所在分区的可用空间是否足够,同时检查/tmp的权限是否为drwxrwxrwt(确保PHP进程能读写)。
最后补充
如果以上都排查过还是有问题,建议检查你的应用代码里有没有硬编码的文件大小限制——比如某些框架或自定义上传逻辑里,可能写死了5*1024*1024这种值,强制限制了上传大小。
内容的提问来源于stack exchange,提问作者DevonDahon




