Установка Mcrypt в PHP 7.2

Столкнулся с необходимостью быстро поднять Magento2 на домашнем компе. Одной из требований M2 это наличие Mcrypt модуля в PHP. К сожалению, его выпилили в PHP 7.2, переконфигурировать все домашнее окружения, у меня не было желания, поэтому я решил погуглить решение и нашел его..
В magento ошибка выглядит как-то так
| 1 2 3 4 5 | [Exception]                                                                                                                                               Warning: Use of undefined constant MCRYPT_BLOWFISH - assumed 'MCRYPT_BLOWFISH' (this will throw an Error in a future version of PHP)  in /public_html/setup/src/Magento/Setup/Module/Di/Code/Scanner/PhpScanner.php on line 56                                                     | 
В 99% случаев не объявленая константа MCRYPT_BLOWFISH означает отсутствие модуля mcrypt.
Проверяем, что модуль не установлен
| 1 2 3 | php -m | grep mcrypt | 
Результат: если модуля нет ничего не выведет
Проверяем версию php
| 1 2 3 | php -v | 
или через скрипт
| 1 2 3 4 5 | <?php phpinfo(); | 
результат
| 1 2 3 4 5 6 | PHP 7.2.17-1+ubuntu18.04.1+deb.sury.org+3 (cli) (built: Apr 10 2019 10:50:57) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies     with Zend OPcache v7.2.17-1+ubuntu18.04.1+deb.sury.org+3, Copyright (c) 1999-2018, by Zend Technologies | 
Если у вас версия 7.0 или ниже, то просто воспользуйтесь командой
| 1 2 3 | apt-get install php-mcrypt | 
в моем случае 7.2.
Выполянем
| 1 2 3 4 5 6 | sudo apt-get -y install gcc make autoconf libc-dev pkg-config sudo apt-get -y install php7.2-dev sudo apt-get -y install libmcrypt-dev sudo pecl install mcrypt-1.0.1 | 
далее создаем ini файл, в папке модулей, в моем случае это /etc/php/7.2/mods-available/
| 1 2 3 | mcedit /etc/php/7.2/mods-available/mcrypt.ini | 
с таким содержимым
| 1 2 3 4 5 | ; configuration for php mcrypt module ; priority=20 extension=mcrypt.so | 
Далее, или вручную или через phpenmod добавляем ссылку на этот конфиг файл в директории откуда читаются конфиги
| 1 2 3 | phpenmod mcrypt | 
в моем случае это команда создает ссылки в этих директориях
| 1 2 3 4 | /etc/php/7.2/apache2/conf.d/@20-mcrypt.ini /etc/php/7.2/cli/conf.d/@20-mcrypt.ini | 
теперь рестартуем apache (и/или php-fpm) и проверяем
| 1 2 3 | php -m | grep mcrypt | 
Результат: должна вывестись надпись mcrypt
Author: | Rating: / | Tags:
 
                    
                
2 comments.
Write a comment