【问题标题】:PHP mailparse.so error - undefined symbol mbfl_convert_filter_flushPHP mailparse.so 错误 - 未定义符号 mbfl_convert_filter_flush
【发布时间】:2014-02-03 07:26:13
【问题描述】:

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

extension=mailparse.so 添加到php.iniDynamic Extensions 部分后,运行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

【问题讨论】:

    标签: php pecl


    【解决方案1】:

    解决方案

    mailparse必须在mbstring之后加载,mbstring/etc/php-5.5.d/mbstring.ini加载,在php.ini之后读取。

    仅仅将mailparse.ini 添加到php-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
    

    那是个谜。

    证明

    $ 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
    $
    

    【讨论】:

    • 这有点老了,但你可以通过在mailparse.ini 的第二行添加; priority=30 来解决这个问题。然后它将符号链接到30-mailparse.ini,并在20-mbstring.ini之后加载
    • 我从 PHP 7.0 升级到 7.1 后遇到了这个问题。感谢您的解决方案! :)
    【解决方案2】:

    快速单行:

    sudo bash -c "echo 'extension=mailparse.so' >> /etc/php.d/zz_mailparse.ini"
    

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

    sudo bash -c "echo 'extension=mailparse.so' >> /etc/php-7.0.d/zz_mailparse.ini"
    

    【讨论】:

    • 不同安装的警告。就我而言,我不得不使用echo 'extension="mailparse.so"' &gt; /etc/php-7.0.d/zz_mailparse.ini
    猜你喜欢
    • 1970-01-01
    • 2012-10-10
    • 2013-10-22
    • 2014-06-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多