在Discuz系统中突破上传附件2MB限制需要多维度配置调整,以下是具体解决方案:
1. **PHP配置文件调整**
- 修改php.ini文件:
- upload_max_filesize = 256M
- post_max_size = 256M
- memory_limit = 512M
- max_execution_time = 300
- max_input_time = 600
复制代码
需重启PHP服务生效
2. **Web服务器配置**
- Nginx调整:
- client_max_body_size 256m;
复制代码
- Apache调整:
- LimitRequestBody 268435456
复制代码
3. **Discuz后台配置**
路径:全局 > 上传设置 > 论坛附件
- 扩展名设置处填写允许的格式:zip|rar|pdf|docx|xlsx|jpg|jpeg|png|gif|bmp
- 最大尺寸设置为php.ini值的90%(如php设置256M,此处填230M)
4. **远程附件特殊配置**
在config/config_global.php中增加:
- $_config['download']['xsendfile']['switch'] = false;
- $_config['download']['xsendfile']['dir'] = '';
复制代码
5. **对象存储适配优化**
在远程附件设置页面需要特别注意:
- 存储路径格式应包含{year}{month}{day}时间戳
- 访问URL需强制HTTPS模式
- 开启异步上传模式(如支持)
6. **服务器环境检查**
执行phpinfo()确认配置是否生效,需确保:
- 实际生效的php.ini路径正确
- opcache配置已重置
- 无多级PHP配置覆盖
7. **大文件上传优化**
在source/function/function_filesock.php中:
- $fp = @fopen($source, 'rb');
- stream_set_timeout($fp, 1800); // 增加超时时间
复制代码
8. **前端适配调整**
修改template/default/forum/editor_menu.htm:
- // 修改约352行处
- maxattachsize = <?php echo $GLOBALS['_G']['group']['maxattachsize']; ?>;
- // 调整为
- maxattachsize = <?php echo $GLOBALS['_G']['group']['maxattachsize'] * 1024 * 1024; ?>;
复制代码
建议分阶段测试:先测试10MB文件,再逐步增大。如使用云存储服务,需注意不同服务商的分片上传策略差异,可通过修改source/class/class_cloudstorage.php中的分片大小参数适配特定云服务要求。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |