Pergunta

NOTA: As bibliotecas que o suporte ao MCRYPT dependem não foram atualizadas em anos e o MCRYPT não deve mais ser considerado um método viável ou seguro de criptografar dados. Além disso, o MCRYPT foi depreciado no Php 5 e removido inteiramente no PHP 7. Se você tiver algum código que execute o MCRYPT, deve refatorá -lo para usar uma biblioteca de criptografia mais moderna.


Alguém sabe por que esta mensagem de erro: (Call to undefined function mcrypt_encrypt() ) Exibe quando eu executo o seguinte código abaixo?

Estou perdendo algumas etapas, talvez qualquer configuração no PHP que eu tenha que fazer antes que esse código possa funcionar?

$key = 'password to (en/de)crypt';
$string = 'string to be encrypted';

$test = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key),
            $string, MCRYPT_MODE_CBC, md5(md5($key)));
Foi útil?

Solução

O que havia funcionado para mim com o PHP versão 5.2.8 foi abrir php.ini e permitir o php_mcrypt.dll extensão removendo o ;, ou seja, mudando:

;extension=php_mcrypt.dll para extension=php_mcrypt.dll

Outras dicas

Se você atualizou recentemente para o Ubuntu 14.04, aqui está a correção deste problema:

$ sudo mv /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
$ sudo php5enmod mcrypt
$ sudo service apache2 restart

Para Windows

;extension=php_mcrypt.dll to extension=php_mcrypt.dll 
 then restart your apache server

Para redhat

sudo yum install php55-mcrypt //if php5.5
sudo yum install php-mcrypt //if less than 5.4
sudo service httpd restart //if apache 2.4
sudo /etc/init.d/httpd restart //if apache 2.2 or less

Para Ubuntu

sudo apt-get install php5-mcrypt
sudo service apache2 restart //if server not reloaded automatically 

Ainda não funciona?

sudo php5enmod mcrypt && sudo serviço apache2 reinicialização

Você não tem a biblioteca McRypt instalada.

Ver http://www.php.net/manual/en/mcrypt.setup.php Para maiores informações.

Se você estiver na hospedagem compartilhada, poderá solicitar ao seu provedor que o instale.


No OSX, você pode instalar facilmente o McRypt via Homebrew

brew install php54-mcrypt --without-homebrew-php

Em seguida, adicione esta linha a /etc/php.ini.

extension="/usr/local/Cellar/php54-mcrypt/5.4.24/mcrypt.so"

Se você estiver usando o PHP 7.2 ou UP:

Esta função foi depreciada no Php 7.1.0 e removida no Php 7.2.0.

fonte: http://php.net/manual/en/function.mcrypt-encrypt.php

Portanto, você deve substituir o código PHP e encontrar uma solução sem McRypt.

Ou, acabei de descobrir, você ainda pode usar o MCRYPT no PHP 7.2.0, mas precisa instalá -lo como uma biblioteca comunitária de extensão PHP. (https://pecl.php.net/)

Nas distritos de Debian/Ubuntu Linux:

sudo apt-get -y install gcc make autoconf libc-dev pkg-config
sudo apt-get -y install php7.2-dev
sudo apt-get -y install libmcrypt-dev

então:

sudo pecl install mcrypt-1.0.1

Fonte: https://www.techrepublic.com/article/how--install-mcrypt-for-php-7-2/

Em Ubuntu, eu tive o problema e resolvi -o com

$ sudo apt-get install php5-mcrypt
$ sudo service apache2 reload

No Ubuntu 14.10:

Instale o módulo McRypt

sudo apt install php5-mcrypt

Ativar módulo McRypt no Apache2

sudo a2enmod mcrypt

Recarregue a configuração do módulo

sudo service apache2 restart

On Linux Mint 17.1 Rebecca - Chamada para função indefinida mcrypt_create_iv ...

Resolvido adicionando a seguinte linha ao php.ini

extension=mcrypt.so

Depois disso a

service apache2 restart

Resolvi-o...

Eu tive o mesmo problema para Php 7 Versão do McRypt ausente.

Isso funcionou para mim.

sudo apt-get update
sudo apt-get install mcrypt php7.0-mcrypt
sudo apt-get upgrade
sudo service apache2 restart (if needed)

McRypt está ativado? Você pode usar phpinfo() Para ver se é.

Mais uma coisa: se você está servindo PHP por meio de um servidor da Web, como o Apache, tente reiniciar o servidor da Web. Isso "redefinirá" quaisquer módulos PHP que possam estar presentes, ativando a nova configuração.

Supondo que você esteja usando o Debian Linux (estou usando o Linux Mint 12, o problema estava no Ubuntu 12.04.1 LTS Server I Ssh'ed.)

Sugiro seguir o conselho do @dkamins e garantir que você tenha o McRypt instalado e ativo na instalação do PHP5. Use "sudo apt-get install php5-mcrypt" para instalar. Minhas anotações abaixo.

Usando a versão php PHP Version 5.3.10-1ubuntu3.4, se você abrir Phpinfo (), conforme sugerido por @john Conde, que você faz criando arquivo de teste no servidor da web (por exemplo, crie a página de status testphp.php com apenas o conteúdo "" em qualquer lugar acessível no servidor via navegador)

Não encontrei presença de status ativado ou desativado na página de status quando aberto no navegador. Quando abri o arquivo php.ini, mencionado por @Anthony Forloney, pensando em descomentar ;extension=php_mcrypt.dll to extension=php_mcrypt.dll

Eu alternei isso para frente e para trás e reiniciei o Apache (estou executando o Apache2 e você pode reiniciar na minha configuração com sudo /etc/init.d/apache2 restart ou quando você está nesse diretório apenas sudo restart Eu acredito) com mudança e sem mudança, mas tudo não. Peguei conselhos @Dkamins e fui instalar o pacote com "Sudo Apt-Get Install Php5-Mcrypt" e, em seguida, reiniciei o Apache como acima. Então meu erro se foi e meu aplicativo funcionou bem.

Se você estiver usando o PHP5-FPM, faça o REMEBER para reiniciá-lo, depois de instalar o McRypt

Serviço Php5-FPM Reiniciar

Se você estiver usando o Ubuntu 14.04, aqui está a correção deste problema:

Primeira verificação php5-mcryp já está instalada apt-get install php5-mcrypt

Se instalado, basta executar este comando dois ou instalar e executar este comando dois

$ sudo php5enmod mcrypt
$ sudo service apache2 restart

Espero que funcione.

Para baseado em Linux (Fedora)

yum -y install php-mcrypt

Ative o módulo adicionando: 'Extensão = mcrypt.so' a php.ini. (/etc/php.ini)

systemctl restart httpd.service

Feito!

Para mim, ajudou a desinstalar McRypt com:

sudo apt-get purge php5-mcrypt

e simplesmente reinstalá -lo:

sudo apt-get install php5-mcrypt

E não se esqueça de reiniciar o Apache, como descrito acima.

Não sei por que e como isso foi diferente no meu caso (usando uma VM com Php55 provisionado), mas talvez isso ajude outra pessoa. Eu também tive esse problema com outros módulos como Xcache ...

Verifique e instale o PHP5-MCRYPT:

sudo apt-get install php5-mcrypt
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top