You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Roundcube上传附件触发内部服务器错误 附报错日志求助排查

报错根因

该报错是Roundcube在IMAP连接已经被提前释放的场景下,执行shutdown逻辑时仍尝试关闭已经不存在的socket资源触发的类型错误,上传的附件实际已写入草稿,所以刷新后可见。

修复步骤

  1. 代码层兼容修复(优先执行,可快速消除报错)
    编辑 /var/www/roundcube/program/lib/Roundcube/rcube_imap_generic.php 文件,定位到430行的fclose()调用逻辑,新增资源类型判断:
// 替换原有的 fclose($this->stream); 为以下代码
if (is_resource($this->stream)) {
    fclose($this->stream);
}

修改后保存,重启PHP服务即可消除该报错。

  1. 底层配置排查(解决连接提前断开的根本问题)
  • 检查PHP配置php.ini的以下参数,确保取值大于你需要上传的附件大小:
    upload_max_filesize = 32M
    post_max_size = 32M
    max_execution_time = 120
    memory_limit = 256M
    
  • 检查Roundcube配置config/config.inc.php:
    确认$config['max_message_size']取值和PHP上传限制匹配,同时检查$config['imap_conn_options']的超时配置是否合理,避免IMAP连接在附件上传过程中被提前断开。
  • 检查Dovecot配置:
    查看conf.d/10-mail.conf的mail_max_userip_connections参数不低于10,conf.d/20-imap.conf的imap_idle_timeout不低于120秒,避免单用户连接数不足、超时导致的IMAP连接提前释放。
  1. 附件预览异常修复
    附件无法直接预览是PHP缺少fileinfo扩展导致的mime类型识别失败,执行对应系统的扩展安装命令后重启PHP服务即可:
  • Debian/Ubuntu:apt install php-fileinfo
  • CentOS/RHEL:yum install php-fileinfo
    安装完成后可在Roundcube配置中确认$config['mime_types']指向系统mime类型文件路径(默认/etc/mime.types即可)。

内容的提问来源于stack exchange,提问作者Matej Petric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 18:15:09