PHP mailparse.so error-неопределенный символ mbfl convert filter flush
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.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
2 ответов
решение
mailparse
должен быть загружен после mbstring
и mbstring
загружается /etc/php-5.5.d/mbstring.ini
который читается после php.ini
.
просто добавив mailparse.ini
to php-5.5.d
не будет работать, потому что ini
файлы загружаются в алфавитном порядке; хотя вы могли бы просто назвать его zz_mailparse.ini
вместо.
загрузка обоих расширений в только(sic) 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
$
быстрый ОДН-вкладыш:
sudo bash -c "echo 'extension=mailparse.so' >> /etc/php.d/zz_mailparse.ini"
изменить - Некоторые установки находятся в других dirs, просто убедитесь:
sudo bash -c "echo 'extension=mailparse.so' >> /etc/php-7.0.d/zz_mailparse.ini"