FMElfinderBundle上传文件报Data exceeds the maximum allowed size错误
上传文件报"Data exceeds the maximum allowed size."的排查方案
修改php.ini配置后仍报错,按以下优先级排查即可解决:
- 确认PHP配置修改生效,补全关联配置项
绝大多数同类问题是改了错误的php.ini文件,或是改完未重启服务。不要用php -i命令查询ini路径,该命令返回的是CLI模式的配置路径,和Web请求实际加载的配置不是同一个文件。在Web可访问目录新建临时文件写入<?php phpinfo();,访问该页面找到Loaded Configuration File项,对应修改这个路径下的php.ini即可。
除了你已经调整的max_file_uploads、upload_max_filesize、file_uploads,必须同步修改两个关联参数,且严格满足大小关系:memory_limit>post_max_size>upload_max_filesize> 你在Elfinder中设置的单文件上传上限。比如你配置了Elfinder允许上传10M以内文件,php.ini可参考如下配置:
修改完成后必须重启php-fpm进程、对应的Web服务(Nginx/Apache),配置才会正式加载。file_uploads = On upload_max_filesize = 16M max_file_uploads = 20 post_max_size = 20M memory_limit = 256M - 排查Web服务器层的请求大小限制
这层限制会在PHP处理请求前直接拦截,修改php.ini不会生效。
使用Nginx的话,在站点对应的server块或全局http块中添加/修改配置:
执行client_max_body_size 20M;nginx -t确认配置语法正确后,重载Nginx服务即可。
使用Apache的话,在站点配置或项目根目录的.htaccess中添加/修改配置:
该配置单位为字节,20971520对应20M,修改完成后重载Apache即可。LimitRequestBody 20971520 - 修复FMElfinderBundle 12.1的配置兼容问题
你当前配置里的upload_allow: ['all']在12.1版本存在已知校验bug,该版本无法识别all作为允许上传类型的合法值,会误触发大小超限的校验逻辑。把该项修改为明确的MIME类型或文件后缀列表即可,比如要允许常见文件类型可以配置为:
另外可以在connector层级全局添加upload_allow: ['image/*', 'application/pdf', 'application/zip', 'application/x-rar-compressed', 'text/*', 'audio/*', 'video/*', 'application/msword', 'application/vnd.openxmlformats-officedocument.*']upload_max_size: 10M配置做兜底,避免单root配置不生效,被默认root的2M大小限制覆盖。 - 精准定位触发点
你已经开启了debug: true,调整完上述配置后如果仍报错,打开浏览器开发者工具的网络面板,上传文件时查看连接器接口的返回内容,debug模式下会明确标注大小限制是在哪一层(PHP/Web服务器/Elfinder)触发的,对应调整即可。
内容的提问来源于stack exchange,提问作者firas matoussi
相关产品推荐
相关产品推荐

