Начиная с версии PHP 7.1.0 функция mcrypt объявлена устаревшей, а начиная с PHP 7.2 попытка использовать это расширение вызывает ошибку.
Пример подобной ошибки:
PHP Warning: PHP Startup: Unable to load dynamic library 'mcrypt.so' (tried: /usr/lib/php/modules/mcrypt.so (/usr/lib/php/modules/mcrypt.so: undefined symbol: spprintf), /usr/lib/php/modules/mcrypt.so.so (/usr/lib/php/modules/mcrypt.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Если вы сталкиваетесь с ошибкой модуля mcrypt, то для её решения откройте конфигурационный файл PHP, обычно он называется php.ini.
Чтобы найти этот файл используйте команду:
locate php.ini
Найдите там строку
extension=mcrypt.so
и закомментируйте её, чтобы получилось так (также строку можно просто удалить):
;extension=mcrypt.so
Замена для mcrypt
В качестве замены для mcrypt можно использовать openssl_encrypt.
Установка openssl_encrypt
Для использования функций OpenSSL вам необходимо установить библиотеку OpenSSL. PHP версий >= 7.1.0 требуют OpenSSL >= 1.0.1.
Для поддержки OpenSSL в PHP вам необходимо скомпилировать PHP с опцией --with-openssl[=DIR].
Поскольку в Linux PHP обычно ставят из репозиториев, а не компилируют из исходных кодов, вы можете проверить, поддерживает ли ваша версия PHP OpenSSL следующей командой:
php -i | grep --color ssl
Как видно на скриншоте, моя версия PHP была скомпилирована с опцией --with-openssl:
Связанные статьи:
- Бесплатное получение и настройка автоматического продления действительных сертификатов SSL (81%)
- Как получить бесплатный SSL сертификат COMODO (81%)
- Как использовать s_client для проверки SSL/TLS на веб сервере HTTPS (81%)
- $Cfg['TempDir'] (./tmp/) недоступен в phpMyAdmin (РЕШЕНО) (60.7%)
- Ошибка «Warning: Unknown: open_basedir restriction in effect.» (РЕШЕНО) (60.7%)
- В Ubuntu (GNOME 3) отсутствует Wine в контекстном меню (РЕШЕНО) (RANDOM - 1.1%)