Erreur fatale: Appel à mcrypt_encrypt undefined function ()
Question
Remarque: Les bibliothèques de soutien MCrypt dépendent n'a pas été mis à jour au cours des années et MCrypt ne devrait plus être considérée comme une méthode viable ou sûre de cryptage des données. De plus, MCrypt a été dépréciée en PHP 5 et supprimé entièrement en PHP 7. Si vous avez un code qui fonctionne MCrypt vous devez refactoriser d'utiliser une bibliothèque de cryptage plus moderne.
Quelqu'un sait pourquoi ce message d'erreur: affiche (Call to undefined function mcrypt_encrypt() )
quand je lance le code suivant ci-dessous
Suis-je manque quelques étapes peut-être un paramètre dans PHP que je dois faire avant que ce code peut travailler?
$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)));
La solution
Ce qui me avait travaillé pour la version PHP 5.2.8, était d'ouvrir php.ini
et permettre l'extension de php_mcrypt.dll
en supprimant le ;
, à savoir le changement:
;extension=php_mcrypt.dll
à extension=php_mcrypt.dll
Autres conseils
Si vous avez récemment mis à jour ubuntu 14.04 est ici 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 de redémarrage apache2
Vous ne disposez pas de la bibliothèque de mcrypt installé.
Voir http://www.php.net/manual/en/ mcrypt.setup.php pour plus d'informations.
Si vous êtes sur un hébergement mutualisé, vous pouvez demander à votre fournisseur de l'installer.
Dans Mac OS X, vous pouvez facilement installer mcrypt via homebrew
brew install php54-mcrypt --without-homebrew-php
Ensuite, ajoutez cette ligne à /etc/php.ini.
extension="/usr/local/Cellar/php54-mcrypt/5.4.24/mcrypt.so"
Si vous utilisez PHP 7.2 ou jusqu'à:
Cette fonction a été dépréciés dans PHP 7.1.0 et PHP 7.2.0 ENLEVER en.
source: http://php.net/manual/en/function. mcrypt-encrypt.php
Vous devez remplacer le code php et trouver une solution sans mcrypt.
Ou, je viens de découvrir, vous pouvez toujours utiliser mcrypt en PHP 7.2.0, mais vous devez l'installer comme une bibliothèque communautaire PHP Extension. ( https://pecl.php.net/ )
Sur Debian / Ubuntu Linux distros:
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
alors:
sudo pecl install mcrypt-1.0.1
Source: https: // www .techrepublic.com / article / how-to-install-mcrypt-pour-php-7-2 /
Sous Ubuntu j'ai eu le problème et résolu avec
$ sudo apt-get install php5-mcrypt
$ sudo service apache2 reload
ubuntu 14.10:
Installer le module mcrypt
sudo apt install php5-mcrypt
Activer le module mcrypt sur apache2
sudo a2enmod mcrypt
configuration du module de recharge
sudo service apache2 restart
Linux Mint 17.1 Rebecca - Appel à la fonction non définie mcrypt_create_iv ...
résolu en ajoutant la ligne suivante à la php.ini
extension=mcrypt.so
Après que
service apache2 restart
a résolu le problème ...
J'ai eu le même problème pour PHP 7 version de mcrypt manquante.
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)
est-mcrypt activé? Vous pouvez utiliser phpinfo()
pour voir si elle est.
Une autre chose: si vous êtes au service PHP via un serveur Web comme Apache, essayez de redémarrer le serveur Web. Cela « reset » des modules PHP qui pourraient être présents, activer la nouvelle configuration.
En supposant que vous utilisez debian linux (j'utilise Linux Mint 12, problème était sur le serveur Ubuntu 12.04.1 LTS Je ssh'ed en.)
Je conseille de prendre @dkamins des conseils et en vous assurant que vous avez Mcrypt installé et actif sur votre php5 installer. Utilisez "sudo apt-get install php5-mcrypt" pour installer. Mes notes ci-dessous.
En utilisant la version PHP PHP Version 5.3.10-1ubuntu3.4
, si vous phpinfo open () comme suggéré par @John Condé, que vous faites par la création du fichier de test sur le serveur Web (par exemple, créer le statut Page testphp.php avec juste le contenu « » partout accessible sur le serveur via un navigateur)
J'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 je puis ouvert le fichier php.ini, mentionné par @Anthony Forloney, en pensant à ;extension=php_mcrypt.dll to extension=php_mcrypt.dll
uncomment
Je basculée que les deux sens et redémarré Apache (je suis en cours d'exécution Apache2 et vous pouvez redémarrer dans ma configuration avec sudo /etc/init.d/apache2 restart
ou lorsque vous êtes dans ce répertoire juste sudo restart
je crois)
avec le changement et sans changement, mais tous ne vont. J'ai pris @dkamins conseils et je suis allé installer le paquet avec « sudo apt-get install php5-mcrypt » et puis redémarré apache comme ci-dessus. Ensuite, mon erreur a disparu et ma demande a bien fonctionné.
Si vous utilisez php5-FPM ne pas oublier de le redémarrer, après l'installation mcrypt
Service restart php5-FPM
Si vous en utilisant ubuntu 14.04 est ici le correctif à ce problème:
Vérifiez d'abord php5-mcryp est apt-get install php5-mcrypt
déjà installé
Si elle est installée, il suffit d'exécuter cette commande deux ou installer et exécuter cette commande deux
$ sudo php5enmod mcrypt
$ sudo service apache2 restart
J'espère que cela fonctionnera.
pour Linux basé (Fedora)
yum -y install php-mcrypt
Activer le module en ajoutant: 'extension = mcrypt.so' à PHP.ini. (/Etc/php.ini)
systemctl restart httpd.service
Fait!
Pour moi, il a aidé à désinstaller mcrypt avec:
sudo apt-get purge php5-mcrypt
et réinstaller simplement:
sudo apt-get install php5-mcrypt
et ne pas oublier de redémarrer apache comme décrit ci-dessus.
Ne pas savoir pourquoi et comment cela a été différent dans mon cas (en utilisant une machine virtuelle avec php55 provisionné), mais peut-être que cela aidera quelqu'un d'autre. J'ai aussi eu ce problème avec d'autres modules comme xcache ...
Vérifier et installer php5-mcrypt:
sudo apt-get install php5-mcrypt