Instalando mCrypt no PHP 7.2 [Ubuntu Server]

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]

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Precisa de ajuda com algo relacionado a este assunto?

Me chama no WhatsApp que eu posso te ajudar!