Как установить / активировать расширение PHP в Ubuntu 18.04 ext-mcrypt

Я устанавливаю новую систему kubuntu 18.04, которая по умолчанию использует php7.2.

Компоновщик, установленный для моего текущего программного проекта, выдает мне такое сообщение об ошибке:

Запрошенное расширение PHP ext-mcrypt * отсутствует в вашей системе. Установите или включите расширение PHP mcrypt.

Кроме того, нет доступного php-mcrypt и других статей, подобных этой http://aryo.lecture.ub.ac.id/easy-install-php-mcrypt-extension-on-ubuntu-linux/ не помогает, так как аналог php -mcrypt или php7-mcrypt не существует.

Как я могу получить установку, отвечающую моим требованиям?

sudo apt-get install php7.2-ext-mcrypt

не находит кандидата на установку.

Есть ли разница между php 7.1 и 7.2?

неудивительно, что это тоже не помогает:

$ sudo phpenmod mcrypt
WARNING: Module mcrypt ini file doesn't exist under /etc/php/7.2/mods-available
WARNING: Module mcrypt ini file doesn't exist under /etc/php/7.2/mods-available

person Calamity Jane    schedule 15.05.2018    source источник
comment
mcrypt был заброшен и больше не поддерживается в PHP. Вы не можете установить mcrypt в текущей версии PHP. Вам придется перенести свой код в новую библиотеку enctyption, такую ​​как openssl или libsodium.   -  person GordonM    schedule 16.05.2018
comment
Я правильно это понимаю. Для openssl мне нужно скомпилировать версию php с openssl, а libsodium уже является частью php 7.2? secure.php.net/manual/en/openssl.installation.php   -  person Calamity Jane    schedule 16.05.2018
comment
Теоретически поддержка openSSL должна быть скомпилирована, но на практике это очень распространено, поскольку это широко используемая библиотека. Насколько мне известно, libsodium всегда доступен в PHP 7.2.   -  person GordonM    schedule 17.05.2018
comment
Ты прав. К счастью, он уже скомпилирован в той версии, которую я использую. В libsodium была досадная ошибка в версии 1.0.16. Неустранимая ошибка PHP :odium_init () в Unknown в строке 0, поэтому сейчас я переключаюсь на openssl. Также натрий не очень хорошо документирован ИМХО.   -  person Calamity Jane    schedule 17.05.2018


Ответы (2)


Сначала проверьте, присутствует ли модуль PHP mcrypt:

$ php -m | grep mcrypt

Чтобы установить PHP-модуль mcrypt, нам сначала необходимо выполнить следующие предварительные требования:

sudo apt install php-dev libmcrypt-dev php-pear

Теперь мы готовы установить PHP-модуль mcrypt в нашу систему Ubuntu 18.04:

$ sudo pecl channel-update pecl.php.net
$ sudo pecl install mcrypt-1.0.1

Откройте файл /etc/php/7.2/cli/php.ini и вставьте:

extension=mcrypt.so

Все сделано. В случае успеха проверка наличия PHP-модуля mcrypt должна привести к следующему выводу:

$ php -m | grep mcrypt
mcrypt

Расширение mcrypt включено в PHP 5.4 - PHP 7.1. Он был удален из PHP 7.2 и перемещен в неофициальное расширение PECL, поскольку библиотека mcrypt больше не поддерживается.

Для PHP 7.2+ вместо этого PHP использует libsodium в качестве криптографической библиотеки. ServerPilot собирает PHP 7.2+ с официальным расширением libsodium. Новый PHP-код должен быть написан с использованием libsodium, а не mcrypt.

Как установить mcrypt на PHP 7.2 или 7.3: https://serverpilot.io/docs/how-to-install-the-php-mcrypt-extension.

person PHP Worm...    schedule 17.01.2019
comment
Отлично написанный ответ. php-pear уже должен быть установлен в Ubuntu 18.04. - person BadHorsie; 08.07.2020

Итак, похоже, что mcrypt устарел с php7.2

Поэтому мне придется либо заменить его в своем программном обеспечении, либо следовать, например, вот как его обойти: https://serverpilot.io/community/articles/how-to-install-the-php-mcrypt-extension.html.

person Calamity Jane    schedule 16.05.2018
comment
НЕ ПЫТАЙТЕСЬ ОБЕЗЖАТЬ! Поддержка mcrypt была удалена в PHP 7 по очень веским причинам, а именно, над ней не работали годами, и она содержит множество известных незащищенных уязвимостей. Если вам удастся взломать поддержку mcrypt в вашей установке PHP, вы в основном установили неработающую библиотеку шифрования, которая никогда не будет исправлена. Вместо этого постарайтесь перенести свой код. - person GordonM; 16.05.2018