PHP 7.0 - 7.2 установка расширения mcrypt.so в Centos 7.* и ISPmanager 5 Lite, Ubuntu 20.04/22.04 tls и aapanel

sitecreator

Administrator
Команда форума
Известно, что из php 7.2 было удалено устаревшее расширение mcrypt.
Но mcrypt может быть необходим, например, для opencart (движок интернет-магазина).
В таком случае необходимо собрать (скомпилировать) mcrypt.so из исходных кодов.

Актуальные выпуски (релизы) mcrypt в исходных кодах вы найдете здесь:

Актуальные выпуски (релизы) mcrypt в исходных кодах


На момент написания статьи актуальным стабильным был релиз 1.0.3. (1.0.4 на март 2021)

Компилятор gcc и прочее, необходимое для сборки нужно установить при отсутствии. ISPmanager поставляется без этих компонентов.

Код:
yum install gcc make autoconf
yum install libmcrypt-devel
/opt/php72/bin/pecl install mcrypt channel://pecl.php.net/mcrypt-1.0.4
На запрос в процессе установки libmcrypt-devel
Код:
libmcrypt prefix? [autodetect] :
Нажимаете [Enter] для авто-определения.


В конце удачной сборки получите:


Далее нужно создать файл
mcrypt.ini, расположенный здесь:
Код:
/opt/php72/etc/mods-available/mcrypt.ini
с содержимым

Код:
extension=mcrypt.so
Далее привычным (включаем "лампочку" напротив расширения) для ISPmanager способом включаете расширение mcrypt.
В принципе его можно включить прописав в соответствующий php.ini код и не создавая mcrypt.ini:

Код:
extension=mcrypt.so
Но при наличии панели управления ISPmanager правильным будет указанный выше способ через создание mcrypt.ini





Если в процессе компилирования появятся ошибки, то может потребоваться установка php-devel соответствующей версии (в нашем примере для 7.2)

Данное описание можно использовать как руководство к действию в случае использования других операционных систем также. Например, Ubuntu. С соответствующим пониманием, что часть команд в других ОС будут выглядеть несколько иначе. И названия пакетов также могут отличаться в разных ОС. Хоть это все подразумевает использование Linux, но в одном случае у вас пакет называется libmcrypt-devel, а в другом - libmcrypt-dev.
 
Последнее редактирование:

sitecreator

Administrator
Команда форума
sudo apt install gcc make autoconf libc-dev pkg-config libmcrypt-dev php-pear php-dev

pecl channel-update pecl.php.net
pecl update-channels

pear config-set php_bin /www/server/php/70/bin/php
pecl config-set php_bin /www/server/php/70/bin/php
pecl -V

pecl install mcrypt



Build process completed successfully
Installing '/usr/lib/php/20210902/mcrypt.so'
install ok: channel://pecl.php.net/mcrypt-1.0.5
php.ini "/www/server/php/56/etc/php.ini" does not exist
You should add "extension=mcrypt.so" to php.ini


pecl uninstall -r mcrypt
pecl -d php_suffix=7.0 install mcrypt

sudo apt-get install php7.0-dev

Build process completed successfully
Installing '/usr/lib/php/20210902/mcrypt.so'
install ok: channel://pecl.php.net/mcrypt-1.0.5
php.ini "/www/server/php/56/etc/php.ini" does not exist
You should add "extension=mcrypt.so" to php.ini
 
Последнее редактирование:

sitecreator

Administrator
Команда форума
ubuntu 20.04, ubuntu 22.04 tls

Просьба обратить внимание на то, что мы устанавливаем PHP-cli - это php командной строки.
Если вы используете php-fpm для совместной работы с веб-сервером nginx, то php-fpm устанавливается отдельно и самостоятельно, например, через панель управления aapanel, это, можно сказать, что два разных php, хоть у них и может быть одинаковая версия.

Расширения, например, mcrypt.so для php-cli и php-fpm будут одинаковые, поэтому в конфиге каждого из php (php.ini) можно подключать один и тот же файл.
Например, после установки php 7.0 (php-cli) нужное расширение будет здесь:
Код:
/usr/lib/php/20151012
20151012 - это в данном случае номер (дата) версии API модулей php. Ваш php должен быть собран с такой же версией API.
Если версии не совпадут, то вы при запуске/перезапуске php-fpm получите ошибку:




просмотр установленных php с возможностью выбора версии по умолчанию:

Код:
sudo update-alternatives --config php
Вывод:
Код:
There are 2 choices for the alternative php (providing /usr/bin/php).

  Selection    Path                  Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php.default   100       auto mode
  1            /usr/bin/php.default   100       manual mode
  2            /usr/bin/php8.1        81        manual mode

Press <enter> to keep the current choice[*], or type selection number:
установить вспомогательный софт
Код:
sudo apt install software-properties-common ca-certificates lsb-release apt-transport-https

Код:
LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
Код:
sudo apt update

sudo apt install php7.0

sudo update-alternatives --config php
Вывод:
Код:
There are 3 choices for the alternative php (providing /usr/bin/php).

  Selection    Path                  Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php.default   100       auto mode
  1            /usr/bin/php.default   100       manual mode
  2            /usr/bin/php7.0        70        manual mode
  3            /usr/bin/php8.1        81        manual mode

Press <enter> to keep the current choice[*], or type selection number: 2
Установим необходимые расширения, включая mcrypt
Код:
apt-get install php-pear php7.0-curl php7.0-dev php7.0-gd php7.0-mbstring php7.0-zip  php7.0-xml

apt-get install php7.0-mcrypt

apt-get install php7.0-imagick
Вывод списка расширений php
Код:
php -m
Далее в конфиг вашего php (php.ini), который работает совместно с веб-сервером нужно добавить соответственно:

Код:
extension="/usr/lib/php/20151012/mcrypt.so"
Сделайте рестарт php-fpm

Проверьте установленные расширения через
Код:
phpinfo
 
Последнее редактирование:
Верх