web-dev-qa-db-fra.com

Erreur fatale: mcrypt_encrypt ()

REMARQUE: Les bibliothèques dont dépend MCrypt n'ont pas été mises à jour depuis des années et MCrypt ne doit plus être considéré comme une méthode viable ou sécurisée de chiffrement des données. De plus, MCrypt est obsolète dans PHP 5 et entièrement supprimé dans PHP 7. Si vous avez un code exécutant MCrypt, vous devez le reformuler pour utiliser une bibliothèque de chiffrement plus moderne. 


Est-ce que quelqu'un sait pourquoi ce message d'erreur: (Call to undefined function mcrypt_encrypt() ) s'affiche lorsque j'exécute le code suivant ci-dessous?

Me manque-t-il des étapes, peut-être n'importe quel paramètre dans PHP que je dois faire avant que ce code puisse fonctionner?

$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)));
57
Jin Yong

Ce qui avait fonctionné pour moi avec la version 5.2.8 de PHP, était d'ouvrir php.ini et de permettre l'extension php_mcrypt.dll en supprimant le ;, c'est-à-dire en changeant:

;extension=php_mcrypt.dll à extension=php_mcrypt.dll

32
Anthony Forloney

Si vous avez récemment mis à jour à Ubuntu 14.04, voici le correctif à ce problème:

$ Sudo mv /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
$ Sudo php5enmod mcrypt
$ Sudo service Apache2 restart
89
flor

Pour les fenêtres

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

Pour 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

Pour Ubuntu

Sudo apt-get install php5-mcrypt
Sudo service Apache2 restart //if server not reloaded automatically 

Ne fonctionne toujours pas?

Sudo php5enmod mcrypt && Sudo service redémarrer Apache2

28
Sabbir

La bibliothèque mcrypt n'est pas installée.

Voir http://www.php.net/manual/en/mcrypt.setup.php pour plus d'informations.

Si vous utilisez un hébergement partagé, vous pouvez demander à votre fournisseur de l'installer.


Sous OSX, vous pouvez facilement installer mcrypt via homebrew.

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

Ajoutez ensuite cette ligne à /etc/php.ini.

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

Sous Ubuntu, j’ai eu le problème et je l’ai résolu avec

$ Sudo apt-get install php5-mcrypt
$ Sudo service Apache2 reload
11

Sur Ubuntu 14.10:

Installer le module mcrypt

Sudo apt install php5-mcrypt

Activer le module mcrypt sur Apache2

Sudo a2enmod mcrypt

Recharger la configuration du module

Sudo service Apache2 restart
7
alphayax

Si vous utilisez PHP 7.2 ou version ultérieure:

Cette fonction a été détruite dans PHP 7.1.0 et supprimée dans PHP 7.2.0.

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

Donc, vous devez remplacer le code php et trouver une solution sans mcrypt.

Ou, je viens de le découvrir, vous pouvez toujours utiliser mcrypt dans PHP 7.2.0, mais vous devez l'installer en tant que bibliothèque de communauté PHP. ( https://pecl.php.net/

Sur les distributions Linux Debian/Ubuntu:

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

puis:

Sudo pecl install mcrypt-1.0.1

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

7
Fabian Thommen

Sous Linux Mint 17.1 Rebecca - Appel de la fonction non définie mcrypt_create_iv ...

Résolu en ajoutant la ligne suivante au php.ini

extension=mcrypt.so

Après ça un 

service Apache2 restart

résolu...

5
Phil Lawlor

J'ai eu le même problème pour PHP 7 version de mcrypt manquant.

Cela a fonctionné pour moi. 

Sudo apt-get update
Sudo apt-get install mcrypt php7.0-mcrypt
Sudo apt-get upgrade
Sudo service Apache2 restart (if needed)
4
Ahmad Vaqas Khan

Si vous utilisez Ubuntu 14.04, voici la solution à ce problème:

Première vérification que php5-mcryp est déjà installé apt-get install php5-mcrypt

Si installé, il suffit d'exécuter ces deux commandes ou d'installer et d'exécuter ces deux commandes

$ Sudo php5enmod mcrypt
$ Sudo service Apache2 restart

J'espère que ça va marcher.

3
Rajesh Jai

Si vous utilisez php5-fpm, n'oubliez pas de le redémarrer, après avoir installé mcrypt

service php5-fpm redémarrer

3
nicky

Mcrypt est-il activé? Vous pouvez utiliser phpinfo() pour voir si c'est le cas.

3
John Conde

En supposant que vous utilisez debian linux (j'utilise Linux mint 12, le problème était sur le serveur Ubuntu 12.04.1 LTS dans lequel je me suis trouvé.)

Je suggère de suivre les conseils de @dkamins et de vous assurer que mcrypt est installé et actif sur votre installation php5. Utilisez "Sudo apt-get install php5-mcrypt" pour installer. Mes notes ci-dessous.

En utilisant PHP version PHP Version 5.3.10-1ubuntu3.4, si vous ouvrez phpinfo () comme suggéré par @John Conde, créez-le en créant un fichier de test sur le serveur Web (par exemple, créez une page d'état testphp.php avec uniquement le contenu "" accessible partout sur Internet). serveur via navigateur)

Je n'ai trouvé aucune présence de l'état activé ou désactivé sur la page d'état lors de l'ouverture dans le navigateur. Quand j'ai ensuite ouvert le fichier php.ini, mentionné par @Anthony Forloney, en pensant à commenter ;extension=php_mcrypt.dll to extension=php_mcrypt.dll

Je l'ai basculé d'avant en arrière et ai redémarré Apache (j'exécute Apache2 et vous pouvez redémarrer dans ma configuration avec Sudo /etc/init.d/Apache2 restart ou lorsque vous êtes dans ce répertoire simplement Sudo restart je crois) Avec changement et sans changement, mais sans succès. J'ai pris conseil auprès de @dkamins et je suis allé installer le paquet avec "Sudo apt-get install php5-mcrypt" puis j'ai redémarré Apache comme ci-dessus. Ensuite, mon erreur a disparu et mon application a bien fonctionné.

3
beiping_troop

Encore une chose: si vous utilisez PHP via un serveur Web tel qu'Apache, essayez de redémarrer le serveur Web. Cela "réinitialisera" tous les modules PHP éventuellement présents, activant ainsi la nouvelle configuration.

3
Mei

Pour moi, cela a aidé à désinstaller mcrypt avec:

Sudo apt-get purge php5-mcrypt

et simplement le réinstaller:

Sudo apt-get install php5-mcrypt

et n'oubliez pas de redémarrer Apache comme décrit ci-dessus.

Je ne sais pas pourquoi et en quoi cela était différent dans mon cas (utiliser une machine virtuelle avec php55 fourni), mais peut-être que cela aidera quelqu'un d'autre J'ai aussi eu ce problème avec d'autres modules comme xcache ... 

1
Heisoka

pour Linux (Fedora)

yum -y install php-mcrypt

Activez le module en ajoutant: 'extension = mcrypt.so' à PHP.ini. (/etc/php.ini)

systemctl restart httpd.service

Terminé!

1
Somwang Souksavatd

Vérifiez et installez php5-mcrypt:

Sudo apt-get install php5-mcrypt
0
Fabricio