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)));
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
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
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
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"
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
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
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/
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...
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)
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.
Si vous utilisez php5-fpm, n'oubliez pas de le redémarrer, après avoir installé mcrypt
service php5-fpm redémarrer
Mcrypt est-il activé? Vous pouvez utiliser phpinfo()
pour voir si c'est le cas.
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é.
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.
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 ...
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é!
Vérifiez et installez php5-mcrypt:
Sudo apt-get install php5-mcrypt