圆形立方体中的致命PHP错误(缺少Mail_mimePart)

时间:2015-06-30 11:04:09

标签: php pear roundcube

我们的ubuntu服务器上有一个圆形实例。

从昨天开始,我们再也无法发送电子邮件了。点击圆形立方体中的发送按钮后,“Nachricht wird gesendet ...” - 消息(正在发送电子邮件)无休止地加载。

搜索日志后,我发现错误消息:

[30-Jun-2015 10:33:50 UTC] PHP Warning:  Missing argument 1 for Mail_mimePart::Mail_mimePart(), called in [***]/roundcube/vendor/pear/mail_mime/Mail/mime.php on line 1288 and defined in [***]/roundcube/vendor/pear/mail_mime-decode/Mail/mimePart.php on line 127
[30-Jun-2015 10:33:50 UTC] PHP Fatal error:  Call to undefined method Mail_mimePart::encodeHeader() in [***]/roundcube/vendor/pear/mail_mime/Mail/mime.php on line 1289

它仍然可以通过SMTP / Dovecot直接发送电子邮件,所以这一切都应该没问题。

我的第一个想法是安装梨包,但它们似乎正确安装在圆形立方体内。

Stacktrace是:

[30-Jun-2015 11:52:26 UTC] Backtrace from warning 'Missing argument 1 for Mail_mimePart::Mail_mimePart(),
 called in [...]/roundcube/vendor/pear/mail_mime/Mail/mime.php on line 1334 and 
defined' at [...]/roundcube/vendor/pear/mail_mime-decode/Mail/mimePart.php 127: [...]/roundcube/index.php 290 calling include_once() |
 [...]/roundcube/program/steps/mail/sendmail.inc 509 calling headers() |
 [...]/roundcube/vendor/pear/mail_mime/Mail/mime.php 1101 calling encodeHeaders() |
 [...]/roundcube/vendor/pear/mail_mime/Mail/mime.php 1314 calling encodeHeader() |
 [...]/roundcube/vendor/pear/mail_mime/Mail/mime.php 1334 calling Mail_mimePart()
[30-Jun-2015 11:52:26 UTC] PHP Fatal error:  Call to undefined method Mail_mimePart::encodeHeader() in [...]roundcube/vendor/pear/mail_mime/Mail/mime.php on line 1335

注意:

  • 服务器是最新的。
  • 作曲家已更新

4 个答案:

答案 0 :(得分:1)

不确定报告的位置,但目前您可以通过将/vendor/pear/mail_mime/Mail/mime.php中的第75行从require_once 'Mail/mimePart.php';更改为require_once 'mimePart.php';

来解决此问题

答案 1 :(得分:1)

我和海报的情况相同。我曾经(不成功)搞乱插件,然后我再也无法发送邮件了。 roundcube / logs / error从我尝试发送时收到了相同的消息。

Roundcube社区论坛有一个solution,对我有用。

我删除了圆形立方体/供应商目录(实际上,我只是为了以防万一)composer install并且从圆形多维数据集目录执行了this._store.select('preferences') .map(preferences => preferences.filter((value, index) => index === 0))

突然我可以再发一次。

答案 2 :(得分:0)

我刚刚完全重新安装了roudcube(用户数据在MySQL或Dovecot中,因此没有数据丢失)。

这是一个类似的问题,因为@Alex Chorry已在评论中指出。它是由作曲家在安装插件时更新mail_mime包引起的(在我的例子中它是globaladdressbook,但我在其他插件上也看到了这个问题)。还原恢复PHP无效,因为它导致插件错误。

所以为了解决这个问题,我完全忽略了作曲家,并且从未安装过它。我在github上指出她手动安装了所有插件:

  
      
  • 将此插件文件夹放入Roundcube的插件目录
  •   
  • 在您的Roundcube配置
  • 中将globaladdressbook添加到$ config ['plugins']   

答案 3 :(得分:0)

我从composer.json

中删除了这3行
    "pear/mail_mime": ">=1.8.9",
    "pear/mail_mime-decode": "~1.5.5",
    "pear/net_smtp": "dev-master",

然后我运行了php composer.phar update

然后我把线放回来,运行更新: incc:/ var / lib / roundcube #php composer.phar update 使用包信息加载composer存储库 初始化PEAR存储库http://pear.php.net更新依赖项(包括require-dev) - 安装pear / pear_exception(dev-master 8c18719)     克隆8c18719fdae000b690e3912be401c76e406dd13b

  • 安装pear / console_getopt(v1.4.1) 从缓存加载

  • 安装pear / pear-core-minimal(dev-master 0457483) 克隆0457483add2e037a5e00eb186b9dce7ea3b49da2

  • 安装pear / net_socket(dev-trunk bbe6a12) 克隆bbe6a12bb4f7059dba161f6ddd43f369c0ec8d09

  • 安装pear / net_smtp(dev-master 3ef8150) 克隆3ef8150ef230314f2a70e803e13a9926e432f7af

  • 安装pear / mail_mime(dev-master 66b2a01) 克隆66b2a01acabe0b8d0ce606833d5cefc1a49a8887

  • 安装pear / mail_mime-decode(1.5.5.2) 下载:100%

然后重新回到圆形立方体中,我可以再次发送。

我并不真正理解作者的答案,但正如我所看到的那样,它可能是一个流氓插件(我已经安装并删除了一些)我想我会尝试这个有用的。