zaLinux.ru

Переход с устаревшего расширения mcrypt на openssl_encrypt


Начиная с версии 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:


Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *