Несколько раз при выполнении консольного скрипта в Magento 2 сталкивался с итуацией, когда система выдавала ошибку:

Notice: Use of undefined constant MCRYPT_BLOWFISH — assumed ‘MCRYPT_BLOWFISH’ in …/public_html/vendor/magento/framework/Encryption/Encryptor.php on line 397

Однозначно проблема была замечена при попытке выполнить php bin/magento setup:upgrade и php bin/magento indexer:reindex на двух разных сайтах и серверах. В последнем случае это был Centos, на примере которого мы и покажем решение. Версия PHP 7.0 и 7.1.27.

Решение проблемы довольно простое: на сервере отсутствует ресширение mcrypt, которое нужно для коректной работы CMS Magento. Ниже по тексту будет пример установки на Centos.

Что такое mcrypt и как быть с Magento?

Mcrypt в PHP —  криптографическое расширение, которое позволяет PHP работать с одноименной библиотекой. Mcrypt поддерживает широкий спектр блочных алгоритмов, таких как DES, TripleDES, Blowfish (по умолчанию), 3-Way, защищённый SK64, защищённый SK128, TwoFish, TEA, RC2 и GOST в CBC, OFB, CFB и ECB. Особенность данного расширения в том, что с версии PHP 7.1 оно объявлено устаревшим. А в ветке 7.2 оно вообще удалено:

mcrypt in php

Источник: https://www.php.net/manual/ru/intro.mcrypt.php

Версия Magento 2.3 полностью совместима с PHP 7.2 (на момент написания, полностью оттестированной была версия PHP 7.2.11 и актуальная версия Magento — 2.3.1 CE). Mcrypt был заменен на Sodium. Если же вы хотите обновить Nagento к версии 2.3, подумайте о том, чтобы обновить версию PHP к 7.2. Это не только более безопастно, но и даст прирост в производительности системы.

Установка mcrypt на Centos

Всего-то 2 строчки позволят вам установить расширение mcrypt на PHP в Centos.
yum -y install epel-release
yum -y install php-mcrypt

Не забудьте перегрузить PHP. Если используете связку PHP+Nginx, сделать это можно командой service php-fpm restart.

«Use of undefined constant MCRYPT_BLOWFISH» и Mcrypt в Magento 2
5 / Оценили: 1