You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Dropzone无法上传超5M图片,PHP配置调整后仍受限问题排查

排查PHP+Dropzone上传5M限制问题的几个方向

从你描述的情况来看,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_filesizepost_max_sizememory_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这类限制。

  • 同样在phpinfoAdditional .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

火山引擎 最新活动