Erro fatal: Chamada para função indefinida mcrypt_encrypt ()
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)));
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