我的服务器自动更新到 Roundcube 1.5 的新版本,从那时起,Roundcube 不再显示任何带有“内部服务器错误”消息的收件箱邮件。
我尝试并寻找可能的解决方案,但没有找到任何可解决的方法。
是带有 PHP 7.4 和 Mysql 服务器的 Centos 7。
您能建议一个行动计划吗?
答案1
如果使用Control-WebPanel [CWP]
,只需在 ssh 中运行以下两个命令:
/scripts/update_cwp
/scripts/mail_roundcube_update
如果您手动安装,升级到但未安装和激活Roundcube
时就会出现此问题,因此:Roundcube 1.5 version
PHP intl extension
- 检查
PHP version
您Roundcube
在其上运行的程序,以了解它编辑index.php
位于Roundcube
路径中的程序,并在文件头上添加此行:
回显 phpinfo();
然后保存文件,并在浏览器中打开 url Roundcube
,您将看到有关Roundcube
包括php.ini
路径在内的 PHP 版本的所有信息(不要忘记删除之后的行)。
2- 启用PHP intl Extension
,具体步骤取决于你的 PHP 版本,许多问题都Stackoverflow
解释了如何执行此操作,例如:我如何启用 PHP Extension intl?
答案2
我还使用官方来源我在日志中发现了以下错误:
Oct 20 21:39:21 [hostname] roundcube[1258]: PHP Fatal error: Uncaught Error: Class 'Spoofchecker' not found in /var/www/webmail/program/lib/Roundcube/rcube_spoofchecker.php:50
Stack trace:
#0 /var/www/webmail/program/actions/mail/index.php(1400): rcube_spoofchecker::check('gmail.com')
#1 /var/www/webmail/program/actions/mail/index.php(523): rcmail_action_mail_index::address_string('[removed]...', 3, false, NULL, 'utf-8')
#2 /var/www/webmail/program/actions/mail/list.php(123): rcmail_action_mail_index::js_message_list(Array, false, Array)
#3 /var/www/webmail/program/include/rcmail.php(275): rcmail_action_mail_list->run(Array)
#4 /var/www/webmail/index.php(283): rcmail->action_handler()
#5 {main}
thrown in /var/www/webmail/program/lib/Roundcube/rcube_spoofchecker.php on line 50
相关部分是:
Class 'Spoofchecker' not found
此封闭式问题报告未捕获错误:未找到类“Spoofchecker”#8127建议包php-intl
现在新要求。 这论坛帖子提供更多详细信息:
根据https://bugs.php.net/bug.php?id=63790仅当使用 ICU >= 4.2 构建 PHP intl 扩展时,Spoofchecker 才可用。因此,我怀疑您的构建没有它,但它是必需的。
因此,是否需要安装取决于您的系统php-intl
。在较新的系统上,则不需要。
php-intl
根据您的系统进行安装:Fedora/CentOS/RedHat/等:
dnf install php-intl
Debian / Ubuntu:
apt install php-intl
不要忘记重新启动你的网络服务器。
答案3
如果您无法控制 php 安装,则可以在 program/actions/mail/index.php 中注释掉此代码以跳过此步骤:
// Homograph attack detection (#6891)
//if (!self::$SUSPICIOUS_EMAIL) {
// self::$SUSPICIOUS_EMAIL = rcube_spoofchecker::check($mailto);
//}