Проблема при установке php7.2-mcrypt

Как я пытаюсь загрузить модуль расширения mcrypt из версии PHP 7.2.X.
Поэтому я попытался использовать библиотеку PECL, совместимую с текущей версией моего PHP, чтобы установить ее, и перешел по этой ссылке: Установка mcrypt на PHP 7.2 во время установки!

Ниже приведены результаты, полученные после выполнения определенных команд на терминале.

[email protected]:/var/www/html/orocrm# apt install php-pear
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  libllvm4.0
Use 'sudo apt autoremove' to remove it.
The following NEW packages will be installed:
  php-pear
0 upgraded, 1 newly installed, 0 to remove and 14 not upgraded.
Need to get 285 kB of archives.
After this operation, 2,107 kB of additional disk space will be used.
Get:1 http://ppa.launchpad.net/ondrej/php/ubuntu xenial/main amd64 php-pear all 1:1.10.5+submodules+notgz-1+ubuntu16.04.1+deb.sury.org+1 [285 kB]
Fetched 285 kB in 1s (230 kB/s)   
Selecting previously unselected package php-pear.
(Reading database ... 215503 files and directories currently installed.)
Preparing to unpack .../php-pear_1%3a1.10.5+submodules+notgz-1+ubuntu16.04.1+deb.sury.org+1_all.deb ...
Unpacking php-pear (1:1.10.5+submodules+notgz-1+ubuntu16.04.1+deb.sury.org+1) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up php-pear (1:1.10.5+submodules+notgz-1+ubuntu16.04.1+deb.sury.org+1) ...

[email protected]:/var/www/html/orocrm$ sudo apt-get -y install gcc make autoconf libc-dev pkg-config
[sudo] password for YYY: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'libc6-dev' instead of 'libc-dev'
gcc is already the newest version (4:5.3.1-1ubuntu1).
make is already the newest version (4.1-6).
pkg-config is already the newest version (0.29.1-0ubuntu1).
libc6-dev is already the newest version (2.23-0ubuntu9).
The following package was automatically installed and is no longer required:
  libllvm4.0
Use 'sudo apt autoremove' to remove it.
Suggested packages:
  autoconf-archive gnu-standards autoconf-doc libtool
The following NEW packages will be installed:
  autoconf automake autotools-dev libsigsegv2 m4
0 upgraded, 5 newly installed, 0 to remove and 14 not upgraded.
Need to get 1,079 kB of archives.
After this operation, 3,998 kB of additional disk space will be used.
Get:1 http://in.archive.ubuntu.com/ubuntu xenial/main amd64 libsigsegv2 amd64 2.10-4 [14.1 kB]
Get:2 http://in.archive.ubuntu.com/ubuntu xenial/main amd64 m4 amd64 1.4.17-5 [195 kB]
Get:3 http://in.archive.ubuntu.com/ubuntu xenial/main amd64 autoconf all 2.69-9 [321 kB]
Get:4 http://in.archive.ubuntu.com/ubuntu xenial/main amd64 autotools-dev all 20150820.1 [39.8 kB]
Get:5 http://in.archive.ubuntu.com/ubuntu xenial/main amd64 automake all 1:1.15-4ubuntu1 [510 kB]
Fetched 1,079 kB in 2s (447 kB/s) 
Selecting previously unselected package libsigsegv2:amd64.
(Reading database ... 215198 files and directories currently installed.)
Preparing to unpack .../libsigsegv2_2.10-4_amd64.deb ...
Unpacking libsigsegv2:amd64 (2.10-4) ...
Selecting previously unselected package m4.
Preparing to unpack .../archives/m4_1.4.17-5_amd64.deb ...
Unpacking m4 (1.4.17-5) ...
Selecting previously unselected package autoconf.
Preparing to unpack .../autoconf_2.69-9_all.deb ...
Unpacking autoconf (2.69-9) ...
Selecting previously unselected package autotools-dev.
Preparing to unpack .../autotools-dev_20150820.1_all.deb ...
Unpacking autotools-dev (20150820.1) ...
Selecting previously unselected package automake.
Preparing to unpack .../automake_1%3a1.15-4ubuntu1_all.deb ...
Unpacking automake (1:1.15-4ubuntu1) ...
Processing triggers for install-info (6.1.0.dfsg.1-5) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for doc-base (0.10.7) ...
Processing 1 added doc-base file...
Setting up libsigsegv2:amd64 (2.10-4) ...
Setting up m4 (1.4.17-5) ...
Setting up autoconf (2.69-9) ...
Setting up autotools-dev (20150820.1) ...
Setting up automake (1:1.15-4ubuntu1) ...
update-alternatives: using /usr/bin/automake-1.15 to provide /usr/bin/automake (automake) in auto mode
Processing triggers for libc-bin (2.23-0ubuntu9) ...

[email protected]:/var/www/html/orocrm$ sudo apt-get -y install libmcrypt-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  libllvm4.0
Use 'sudo apt autoremove' to remove it.
The following NEW packages will be installed:
  libmcrypt-dev
0 upgraded, 1 newly installed, 0 to remove and 14 not upgraded.
Need to get 83.7 kB of archives.
After this operation, 438 kB of additional disk space will be used.
Get:1 http://in.archive.ubuntu.com/ubuntu xenial/universe amd64 libmcrypt-dev amd64 2.5.8-3.3 [83.7 kB]
Fetched 83.7 kB in 0s (105 kB/s)       
Selecting previously unselected package libmcrypt-dev.
(Reading database ... 215484 files and directories currently installed.)
Preparing to unpack .../libmcrypt-dev_2.5.8-3.3_amd64.deb ...
Unpacking libmcrypt-dev (2.5.8-3.3) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up libmcrypt-dev (2.5.8-3.3) ...

[email protected]:/var/www/html/orocrm$ sudo pecl7.2-sp install --nodeps mcrypt-snapshot
sudo: pecl7.2-sp: command not found

Поскольку я получаю этот тип ошибки как pecl7.2-sp: команда не найдена

Из раздела документации было четко заявлено, что он устарел и больше не будет доступен с точки зрения безопасности - с тех пор, начиная с продакшен версии PHP 7.2.X и далее.

Но некоторым проектам нужны эти зависимости, чтобы выполнить необходимые функции по мере необходимости. Как мне решить вышеуказанную проблему?


ОБНОВИТЬ:

TL; DR:

У меня было много ответов от голосов на опубликованный ответ. Ответы должны быть распределены в зависимости от уровня архитектуры ОС. Поскольку я использую общий сервер для хостинга, над ним находится более одного проекта, кодируемого версией PHP 5.XX, поэтому я решил перейти на PHP 7.1.X, который по умолчанию поддерживает расширение mcrypt в моя ОС на базе Debian.

Как я уже упоминал в ссылке при установке расширения mcrypt на PHP 7.2, сообществом Server Pilot. Эти люди сказали, что доступна более новая версия pecl-7.2 для установки mcrypt на PHP-7.2. К сожалению, это закончилось pecl7.2-sp: command not found из выполненных команд, которые были выставлены. Позже страница веб-сайта получила обновление, поэтому команды там не соответствуют командам, которые были пробованы при выполнении.

Наконец, какое бы решение ни подходило для вашего уровня архитектуры ОС, просто сделайте это!

ИЛИ ЖЕ

Если приведенные ниже подходы не дали результата, чтобы решить основную причину.
Кроме того, вы можете перейти на версию PHP 7.1.X, которая по умолчанию поддерживает расширение mcrypt.

Ответ 1

Я выполнил следующие шаги, чтобы установить mcrypt для PHP7.2 с помощью PECL.

  • Установить PECL

apt-get install php-pecl

  1. Перед установкой MCRYPT вы должны установить libmcrypt

apt-get install libmcrypt-dev libreadline-dev

  1. Установите MCRYPT 1.0.1, используя PECL

pecl install mcrypt-1.0.1

  1. После успешной установки

Вы должны добавить " extension = mcrypt.so" в php.ini

Прошу прокомментировать ниже, если вам нужна помощь.:-)

Ответ 2

Mcrypt PECL extenstion

 sudo apt-get -y install gcc make autoconf libc-dev pkg-config
 sudo apt-get -y install libmcrypt-dev
 sudo pecl install mcrypt-1.0.1

Когда вы увидите приглашение

 libmcrypt prefix? [autodetect] :

Нажмите [Enter], чтобы автоопределить.

После успешной установки mcrypt trought pecl вам следует добавить расширение mcrypt.so в php.ini.

Результат будет выглядеть так:

...
Build process completed successfully
Installing '/usr/lib/php/20170718/mcrypt.so'    ---->   this is our path to mcrypt extension lib
install ok: channel://pecl.php.net/mcrypt-1.0.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=mcrypt.so" to php.ini

Возьмите путь установки и добавьте в конфигурацию cli и apache2 php.ini.

sudo bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/cli/conf.d/mcrypt.ini"
sudo bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/apache2/conf.d/mcrypt.ini"

Убедитесь, что расширение установлено

Команда запуска:

php -i | grep "mcrypt"

Результат будет выглядеть так:

/etc/php/7.2/cli/conf.d/mcrypt.ini
Registered Stream Filters => zlib.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, convert.iconv.*, mcrypt.*, mdecrypt.*
mcrypt
mcrypt support => enabled
mcrypt_filter support => enabled
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no value

Ответ 3

@praneeth-nidarshan охватывает в основном все этапы, за исключением некоторых:

  • Убедитесь, что у вас установлена ​​груша (или установлена):

$ sudo apt-get install php-pear

  • Установить, если он еще не установлен, php7.2-dev, чтобы избежать ошибки:

sh: phpize: не найден

ОШИБКА: `phpize failed

$ sudo apt-get install php7.2-dev

  • Установить mcrypt с помощью pecl:

$ sudo pecl install mcrypt-1.0.1

  • Добавьте расширение extension=mcrypt.so в файл конфигурации php.ini; если вы не знаете, где это, выполните поиск с помощью:

$ sudo php -i | grep 'Configuration File'

Ответ 4

В качестве альтернативы вы можете установить версию mcrypt и создать символическую ссылку на нее:

Установите php7.1-mcrypt:

sudo apt install php7.1-mcrypt

Создайте символическую ссылку:

sudo ln -s /etc/php/7.1/mods-available/mcrypt.ini /etc/php/7.2/mods-available

После включения mcrypt помощью sudo phpenmod mcrypt он становится доступным.

Ответ 5

sudo apt-get install php-pear php7.x-dev

х ваша версия php как 7.2 php7.2-dev

apt-get install libmcrypt-dev libreadline-dev
pecl install mcrypt-1.0.1 

затем добавьте " extension = mcrypt.so " в "/etc/php/7.2/apache2/php.ini"

Здесь php.ini зависит от вашей установки php и используемой apache версии php.