安装mailparse php7 mbstring时出现错误

9

我目前正在努力将我们的项目迁移到php7。

在尝试编译mailparse扩展或使用pecl安装时,我遇到了以下错误:

#error The mailparse extension requires the mbstring extension!

我已经安装了php7.0-mbstring,并尝试将mbstring扩展与mailparse源代码一起使用。我还尝试使用我的旧C技能并尝试自己包含库,但没有成功。

你们有什么想法可以解决我的问题吗?(不要像我在一些论坛中看到的那样编辑代码)

谢谢


通过检查 phpinfo() 的输出来确认已启用 mailparsembstring 扩展。 - Raptor
经过查看,我可以确认 mbstring 已安装并启用。但由于 mailparse 由于错误未能安装,因此它缺失了。 - Charles Teinturier
1个回答

38

您应该能够下载mailparse源码,在mailparse.c中(大约在第34行左右)注释掉HAVE_MBSTRING的测试,然后正常构建它。

以下是我在Ubuntu 16.04中所做的(必要时使用“sudo”):

cd /tmp

apt-get install php7.0-dev

pecl download mailparse

tar xvzf mailparse-3.0.2.tgz

cd mailparse-3.0.2

phpize

./configure

sed -i \
  's/^\(#error .* the mbstring extension!\)/\/\/\1/' \
  mailparse.c

make

make install

然后您只需在 PHP 配置中启用 mailparse.so 模块。

对于 Ubuntu 16.04 和 PHP-FPM,您可以使用以下命令:

echo "extension=mailparse.so" > \
  /etc/php/7.0/fpm/conf.d/30-mailparse.ini

service php7.0-fpm reload

我看到了你关于“无需编辑代码”的注释。我应该提到Zend自己的帮助资源也推荐同样的修复方法:https://support.zend.com/hc/en-us/articles/203408233-Compile-mailparse-extension-with-mbstring-dependency- - Jeff Standen
3
我只是想补充一下,如果你没有安装php7.0-dev(例如sudo apt install php7.0-dev),那么phpize将无法工作。 - Kevin Remisoski
好的,@KevinRemisoski。谢谢! - Jeff Standen
1
如果您使用的是Ubuntu 16 LTS,最好创建符号链接echo "extension=mailparse.so" > \ /etc/php/7.0/mods-available/mailparse.iniln -s /etc/php/7.0/mods-available/mailparse.ini /etc/php/7.0/cli/conf.d/30-mailparse.iniln -s /etc/php/7.0/mods-available/mailparse.ini /etc/php/7.0/apache2/conf.d/30-mailparse.ini - yespbs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接