PHP mailparse.so错误 - 未定义的符号mbfl_convert_filter_flush

Vla*_*nea 9 php pecl

sudo pecl install mailparse 以..结束:

Build process completed successfully
Installing '/usr/lib64/php/5.5/modules/mailparse.so'
install ok: channel://pecl.php.net/mailparse-2.1.6
configuration option "php_ini" is not set to php.ini location
You should add "extension=mailparse.so" to php.ini
Run Code Online (Sandbox Code Playgroud)

添加extension=mailparse.soDynamic Extensions部分后php.ini,运行php打印:

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/5.5/modules/mailparse.so' - /usr/lib64/php/5.5/modules/mailparse.so: undefined symbol: mbfl_convert_filter_flush in Unknown on line 0

Vla*_*nea 16

mailparse必须被加载后mbstring,与mbstring由装入/etc/php-5.5.d/mbstring.ini其后读取php.ini.

仅仅加入mailparse.iniphp-5.5.d将无法正常工作,因为ini文件是按字母顺序加载的; 虽然你可以zz_mailparse.ini改为命名.

加载两个扩展名(原文如此)会php.ini导致:

PHP Warning:  Module 'mbstring' already loaded in Unknown on line 0
PHP Warning:  Module 'mailparse' already loaded in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)

那是一个谜.

证明

$ echo '<?php echo extension_loaded("mailparse") ? "mailparse loaded\n" : "mailparse not loaded\n";' > ~/is_mailparse_loaded.php
$ php ~/is_mailparse_loaded.php
mailparse loaded
$ pwd
/etc/php-5.5.d
$ sudo mv zz_mailparse.ini mailparse.ini
$ php ~/is_mailparse_loaded.php
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/5.5/modules/mailparse.so' - /usr/lib64/php/5.5/modules/mailparse.so: undefined symbol: mbfl_convert_filter_flush in Unknown on line 0
mailparse not loaded
$ sudo mv mailparse.ini zz_mailparse.ini
$ php ~/is_mailparse_loaded.php
mailparse loaded
$
Run Code Online (Sandbox Code Playgroud)


red*_*ent 5

一个快速的单线:

sudo bash -c "echo 'extension=mailparse.so' >> /etc/php.d/zz_mailparse.ini"
Run Code Online (Sandbox Code Playgroud)

编辑 - 一些安装在其他目录中,只需确保:

sudo bash -c "echo 'extension=mailparse.so' >> /etc/php-7.0.d/zz_mailparse.ini"
Run Code Online (Sandbox Code Playgroud)