X

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

Столкнулся с необходимостью быстро поднять Magento2 на домашнем компе. Одной из требований M2 это наличие Mcrypt модуля в PHP. К сожалению, его выпилили в PHP 7.2, переконфигурировать все домашнее окружения, у меня не было желания, поэтому я решил погуглить решение и нашел его..

В magento ошибка выглядит как-то так

[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.

Проверяем, что модуль не установлен

php -m | grep mcrypt

Результат: если можуля нет ничего не выведет

Проверяем версию php

php -v

или через скрипт

<?php

phpinfo();

результат

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 или ниже, то просто воспользуйтесь командой

apt-get install php-mcrypt

в моем случае 7.2.

Выполянем

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/

mcedit /etc/php/7.2/mods-available/mcrypt.ini

с таким содержимым

; configuration for php mcrypt module
; priority=20
extension=mcrypt.so

Далее, или вручную или через phpenmod добавляем ссылку на этот конфиг файл в директории откуда читаются конфиги

phpenmod mcrypt

в моем случае это команда создает ссылки в этих директориях

/etc/php/7.2/apache2/conf.d/@20-mcrypt.ini
/etc/php/7.2/cli/conf.d/@20-mcrypt.ini

теперь рестартуем apache (и/или php-fpm) и проверяем

php -m | grep mcrypt

Результат: должна вывестись надпись mcrypt

Категории: PHP
Тэги: magento 2mcryptphpubuntu

Комментарии (0)