Apesar de ter sido descontinuado (deprecated) na versão 7.1 do PHP e removido na versão 7.2, algumas aplicações ainda utilizam o mcrypt, uma delas o Magento 1.9.X, então vamos ver aqui como instalar essa biblioteca no seu servidor.
A extensão mcrypt é uma interface para a biblioteca de criptografia mcrypt. Esta extensão é útil para permitir que o código PHP usando o mcrypt seja executado no PHP 7.2+.
O principal problema com a extensão mcrypt é que ela é baseada no libmcrypt que não foi desenvolvido desde o seu upstream em 2007. Assim, já faz mais e 10 anos, mesmo que a biblioteca ainda seja usada. No entanto, sem o desenvolvimento adequado e biblioteca tornou-se mal vista por muitos administradores de sistema.
Devido ao fim do desenvolvimento da extensão mcrypt, a extensão também foi removida do PHP 7.2 e movida para um repositório não oficial do PECL. No entanto, você ainda pode encontrar a extensão mcrypt no PHP 5.4 até o PHP 7.1. A chegada do PHP 7.2 foi anunciada, mas não conterá a extensão mcrypt. Para o PHP 7.2+, o PHP usa libsodium como uma biblioteca de criptografia.
Para instalar esta extensão no PHP 7.2, execute os seguintes comandos como o usuário root do seu servidor:
Verifique a versão php e pecl
[code=”bash”]php -v
pecl version[/code]
Se o seu php não for 7.2, use o comando /usr/bin/php7.2 em vez de php.
Instalando a extensão mcrypt
[code=”bash”]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[/code]
Quando ver essa pergunta:
[code=”bash”]libmcrypt prefix? [autodetect] :[/code]
Apenas pressione [enter]
Após o sucesso da instalação do mcrypt pelo pecl, você deve adicionar a extensão mcrypt.so ao php.ini.
O fim da instalação vai mostrar algo como isso:
[code=”bash]…
Build process completed successfully
Installing ‘/usr/lib/php/20170718/mcrypt.so’ —-> esse é o caminho da extensão mcrypt
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[/code]
Copie o caminho da extensão e adicione à configuração cli e apache2 php.ini com o comando abaixo. Se o caminho for diferente no seu sistema você deve corrigir o código abaixo antes de executar.
[code=”bash]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”
[/code]
Verifique se a extensão foi instalada
Rode o comando:
[code=”bash”]php -i | grep “mcrypt”[/code]
A saída deve ser assim:
[code=”bash]/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[/code]
Solução de problemas
Apareceu o erro abaixo:
[code=”bash]ERROR: ‘phpize’ failed [/code]
Você deve instalar o php7.2-dev
[code=”bash]apt-get install php7.2-dev[/code]