Назад | Перейти на главную страницу

Невозможно загрузить mailparse даже с префиксом zz

Я читал множество статей, в которых говорилось, что mailparse необходимо загружать после mbstring, однако, даже при префиксе mailparse с помощью zz, у него все еще есть та же проблема, и я действительно в своем уме, пытаясь понять, почему.

Хотя я до сих пор вижу его в списке модулей.

[root@intranet:~]# php -m
PHP Warning:  PHP Startup: Unable to load dynamic library     '/usr/lib64/php/modules/zz-mailparse.so' - /usr/lib64/php/modules/zz-    mailparse.so: undefined symbol: mbfl_convert_filter_flush in Unknown on line 0
[PHP Modules]
bz2
calendar
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
imap
intl
json
libxml
mailparse
mbstring
mcrypt
mhash
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache

в /etc/php.ini

extension=zz-mailparse.so

Не уверен, что это проблема, хотя у меня SSELinux разрешен.

[root@intranet:/usr/lib64/php/modules]# ls -lhZ
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       bz2.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       calendar.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       ctype.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       curl.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       dom.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       exif.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       fileinfo.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       ftp.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       gd.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       gettext.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       gmp.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       iconv.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       imap.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       intl.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       json.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       mbstring.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       mcrypt.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       mysqli.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       mysql.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       opcache.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       pdo_mysql.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       pdo.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       pdo_sqlite.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       phar.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       shmop.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       simplexml.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       sockets.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       sqlite3.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       tokenizer.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       wddx.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       xmlreader.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       xml.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       xmlwriter.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       xsl.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0       zip.so
-rwxr-xr-x. root root unconfined_u:object_r:lib_t:s0   zz-mailparse.so

Я нахожусь на сервере RHEL7 с PHP 5.6.28 и MariaDB 5.5.52

У меня здесь была такая же проблема.

Проблема вызвана двумя фактами:

  1. В mailparse.so Библиотека динамической компоновки PHP требует mbstring.so Библиотека динамической компоновки PHP.

  2. Библиотеки динамической компоновки PHP ("расширения") загружаются из обоих /etc/php.ini/etc/php-cli.ini) и файлы в /etc/php.d каталог в алфавитном порядке.

Есть несколько решений:

  1. Гарантировать, что mbstring.so загружается до mailparse.so в php-cli.ini:
extension=mbstring.so
extension=mailparse.so
  1. Если у вас есть какое-либо расширение в файле в /etc/php.dпереименуйте .ini сами файлы, чтобы они были упорядочены.
mbstring.so

    extension=mbstring.so

zz-mailparse.so

    extension=mailparse.so
  1. Загрузите mbstring.so модуль дважды. Обратите внимание, что это приводит к появлению множества предупреждений PHP в журналах, которые мне не нравятся.
mailparse.so

    extension=mbstring.so
    extension=mailparse.so

mbstring.so

    extension=mbstring.so

Может, вы включите модуль дважды. Что-то похожее:

$ /etc/php/7.1/cli/conf.d # ls -lh | grep parse
lrwxrwxrwx 1 root root 41 Feb  7 12:37 20-mailparse.ini -> /etc/php/7.1/mods-available/mailparse.ini
lrwxrwxrwx 1 root root 41 Feb  7 13:03 21-mailparse.ini -> /etc/php/7.1/mods-available/mailparse.ini