Roundcube附件上传内部服务器错误

Roundcube attachment upload internal server error

所以基本上我连续两天都在寻找解决方案,但似乎没有任何帮助。

我正在使用带有 IMAP、postfixadmin 和 dovecot 的 Roundcube 邮件客户端,每当我尝试上传附件时,我都会收到内部服务器错误。 这是我设法在日志中捕获的内容:

[11-Nov-2021 01:41:27 UTC] PHP Fatal error:  Uncaught TypeError: fclose(): Argument #1 ($stream) must be of type resource, null given in /var/www/roundcube/program/lib/Roundcube/rcube_imap_generic.php:430
Stack trace:
#0 /var/www/roundcube/program/lib/Roundcube/rcube_imap_generic.php(430): fclose()
#1 /var/www/roundcube/program/lib/Roundcube/rcube_imap_generic.php(1149): rcube_imap_generic->closeSocket()
#2 /var/www/roundcube/program/lib/Roundcube/rcube_imap.php(215): rcube_imap_generic->closeConnection()
#3 /var/www/roundcube/program/lib/Roundcube/rcube.php(1038): rcube_imap->close()
#4 /var/www/roundcube/program/include/rcmail.php(921): rcube->shutdown()
#5 [internal function]: rcmail->shutdown()
#6 {main}
  thrown in /var/www/roundcube/program/lib/Roundcube/rcube_imap_generic.php on line 430

服务器周围有很多设置,所以如果您认为需要其中的一些进行调试,请尽管询问,我很乐意将它们放在这里

编辑:我制作了一个简短的视频,介绍了所有发生的事情。您可以看到上传“失败”并显示内部服务器错误消息,但是刷新页面后,附件就在那里并且正在通过电子邮件发送,收到该电子邮件后,我无法在电子邮件中看到附件预览,但是当我点击在上面我可以看到它并下载它。

经过漫长的几天,我终于自己弄明白了,而且非常简单。所以发生的事情是 rounducbe 试图关闭不存在的文件。

因此,对于面临相同问题的所有人,要解决此问题,您必须编辑第 430 行的文件“path/to/roundcube/program/lib/Roundcube/rcube_imap_generic.php” 改变这个:

protected function closeSocket()
    {
        @fclose($this->fp);
        $this->fp = null;
    }

进入这个:

protected function closeSocket()
    {
        if($this->fp){
        @fclose($this->fp);
        }
        $this->fp = null;
    }