致命 PHP-roundcube 错误(缺少 Mail_mimePart)
Fatal PHP-Error in roundcube (missing Mail_mimePart)
我们的 ubuntu 服务器上有一个 roundcube 实例。
从昨天开始,我们就不能再发送邮件了。点击 roundcube 中的发送按钮后,"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 直接发送电子邮件,所以这边应该没问题。
我的第一个想法是安装 pear 软件包,但它们似乎已正确安装在 roundcube 中。
堆栈跟踪是:
[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
备注:
- 服务器是最新的。
- 作曲家已更新
我刚刚完全重新安装了 roudcube(用户数据在 MySQL 或 Dovecot 中,因此没有数据丢失)。
这是一个与@Alex Chorry 已经在评论中指出的类似的问题。这是由作曲家在安装插件时更新 mail_mime 包引起的(在我的例子中是 globaladdressbook,但我在其他插件上也看到过这个问题)。恢复 php 也没有用,因为它导致了插件错误。
所以为了解决这个问题,我完全忽略了composer,并没有安装它。我手动安装了她在 github:
上指出的所有插件
- Place this plugin folder into plugins directory of Roundcube
- Add globaladdressbook to $config['plugins'] in your Roundcube config
不确定在哪里报告,但目前您可以通过将 /vendor/pear/mail_mime/Mail/mime.php
中的第 75 行从 require_once 'Mail/mimePart.php';
更改为 require_once 'mimePart.php';
来解决此问题
我从 composer.json
中删除了这 3 行
"pear/mail_mime": ">=1.8.9",
"pear/mail_mime-decode": "~1.5.5",
"pear/net_smtp": "dev-master",
我接着运行phpcomposer.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(开发大师 0457483)
克隆 0457483add2e037a5e00eb186b9dce7ea3b49da2
正在安装 pear/net_socket (dev-trunk bbe6a12)
克隆 bbe6a12bb4f7059dba161f6ddd43f369c0ec8d09
正在安装 pear/net_smtp(开发大师 3ef8150)
克隆 3ef8150ef230314f2a70e803e13a9926e432f7af
正在安装pear/mail_mime(开发大师 66b2a01)
克隆 66b2a01acabe0b8d0ce606833d5cefc1a49a8887
正在安装pear/mail_mime-decode (1.5.5.2)
下载:100%
然后重新登录到 roundcube,我可以再次发送。
我不是很理解作者的回答,但据我所知,这可能是一个流氓插件(我已经安装并删除了一些),我想我会尝试一下是否有效。
我和发帖者的情况一样。我一直(没有成功地)弄乱插件,然后我不能再发送邮件了。 roundcube/logs/error 收到了与我尝试发送时相同的消息。
Roundcube 社区论坛有一个 solution 对我有用。
我删除了 roundcube/vendor 目录(实际上,我删除了 mv vendor vendor_bak
以防万一)并从 roundcube 目录中删除了 composer install
。
突然又可以发了
我们的 ubuntu 服务器上有一个 roundcube 实例。
从昨天开始,我们就不能再发送邮件了。点击 roundcube 中的发送按钮后,"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 直接发送电子邮件,所以这边应该没问题。
我的第一个想法是安装 pear 软件包,但它们似乎已正确安装在 roundcube 中。
堆栈跟踪是:
[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
备注:
- 服务器是最新的。
- 作曲家已更新
我刚刚完全重新安装了 roudcube(用户数据在 MySQL 或 Dovecot 中,因此没有数据丢失)。
这是一个与@Alex Chorry 已经在评论中指出的类似的问题。这是由作曲家在安装插件时更新 mail_mime 包引起的(在我的例子中是 globaladdressbook,但我在其他插件上也看到过这个问题)。恢复 php 也没有用,因为它导致了插件错误。
所以为了解决这个问题,我完全忽略了composer,并没有安装它。我手动安装了她在 github:
上指出的所有插件
- Place this plugin folder into plugins directory of Roundcube
- Add globaladdressbook to $config['plugins'] in your Roundcube config
不确定在哪里报告,但目前您可以通过将 /vendor/pear/mail_mime/Mail/mime.php
中的第 75 行从 require_once 'Mail/mimePart.php';
更改为 require_once 'mimePart.php';
我从 composer.json
中删除了这 3 行 "pear/mail_mime": ">=1.8.9",
"pear/mail_mime-decode": "~1.5.5",
"pear/net_smtp": "dev-master",
我接着运行phpcomposer.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(开发大师 0457483) 克隆 0457483add2e037a5e00eb186b9dce7ea3b49da2
正在安装 pear/net_socket (dev-trunk bbe6a12) 克隆 bbe6a12bb4f7059dba161f6ddd43f369c0ec8d09
正在安装 pear/net_smtp(开发大师 3ef8150) 克隆 3ef8150ef230314f2a70e803e13a9926e432f7af
正在安装pear/mail_mime(开发大师 66b2a01) 克隆 66b2a01acabe0b8d0ce606833d5cefc1a49a8887
正在安装pear/mail_mime-decode (1.5.5.2) 下载:100%
然后重新登录到 roundcube,我可以再次发送。
我不是很理解作者的回答,但据我所知,这可能是一个流氓插件(我已经安装并删除了一些),我想我会尝试一下是否有效。
我和发帖者的情况一样。我一直(没有成功地)弄乱插件,然后我不能再发送邮件了。 roundcube/logs/error 收到了与我尝试发送时相同的消息。
Roundcube 社区论坛有一个 solution 对我有用。
我删除了 roundcube/vendor 目录(实际上,我删除了 mv vendor vendor_bak
以防万一)并从 roundcube 目录中删除了 composer install
。
突然又可以发了