【问题标题】:Fatal PHP-Error in roundcube (missing Mail_mimePart)圆形立方体中的致命 PHP 错误(缺少 Mail_mimePart)
【发布时间】:2015-09-17 03:32:01
【问题描述】:

我们的 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 直接发送电子邮件,所以这方面的一切都应该没问题。

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

堆栈跟踪是:

[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

注意事项:

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

【问题讨论】:

  • 好像你的 pear 'mail_mime' 包已经更新,并且它的版本不向后兼容。要么恢复到旧版本(如果你知道哪一个),或者更新你的 php 代码。
  • 我之前已经解决了,但这并没有错,看我的回答!谢谢!

标签: php pear roundcube


【解决方案1】:

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

这与@Alex Chorry 在 cmets 中已经指出的类似问题。这是由于作曲家在安装插件时更新了 mail_mime 包引起的(在我的情况下,它是 globaladdressbook,但我在其他插件上也看到了这个问题)。恢复 php 也不起作用,因为它导致插件错误。

所以为了解决这个问题,我完全忽略了composer,也没有安装它。我手动安装了她在github 上指出的所有插件:

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

【讨论】:

    【解决方案2】:

    不确定在哪里报告,但目前您可以通过将 /vendor/pear/mail_mime/Mail/mime.php 中的第 75 行从 require_once 'Mail/mimePart.php'; 更改为 require_once 'mimePart.php'; 来解决此问题

    【讨论】:

      【解决方案3】:

      我从 composer.json 中删除了这 3 行

          "pear/mail_mime": ">=1.8.9",
          "pear/mail_mime-decode": "~1.5.5",
          "pear/net_smtp": "dev-master",
      

      然后我运行 php composer.phar 更新

      然后我把这些线放回去,运行更新: incc:/var/lib/roundcube# php composer.phar 更新 使用包信息加载作曲家存储库 初始化 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%

      然后重新登录roundcube,我可以再次发送。

      我并没有真正理解作者的回答,但我看到它可能是一个流氓插件(我已经安装并删除了一些),我想我会试试这个可行的。

      【讨论】:

        【解决方案4】:

        我和发帖人的情况一样。我一直在(不成功)搞乱插件,然后我不能再发送邮件了。 roundcube/logs/error 与我尝试发送时的消息相同。

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

        我删除了roundcube/vendor 目录(实际上,我做了mv vendor vendor_bak 以防万一)并从roundcube 目录中删除了composer install

        突然间我可以再次发送。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-10-18
          • 1970-01-01
          • 1970-01-01
          • 2020-02-11
          • 1970-01-01
          • 2022-01-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多