PHP mailparse.so error - undefined symbol mbfl_convert_filter_flush
pecl, php
Solution
Solution
`mailparse` must be loaded after `mbstring`, and `mbstring` is loaded by `/etc/php-5.5.d/mbstring.ini` which is read after `php.ini`.
Merely adding `mailparse.ini` to `php-5.5.d` will not work, because `ini` files are loaded alphabetically; though you could just name it `zz_mailparse.ini` instead.
Loading both extensions in only(sic) `php.ini` results in:
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
PHP Warning: Module 'mailparse' already loaded in Unknown on line 0
That one's a mystery.
Proof
$ 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
$
Problem
`sudo pecl install mailparse` ends with: ``` 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 ``` After adding `extension=mailparse.so` to the `Dynamic Extensions` section of `php.ini`, running `php` prints this: `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`