Erreur fatale: appel à la fonction indéfinie mcrypt encrypt()

Remarque: les bibliothèques dont dépend le support MCrypt n'ont pas été mises à jour depuis des années et MCrypt ne devrait plus être considéré comme une méthode viable ou sécurisée de chiffrement des données. De plus, MCrypt a été déprécié en PHP 5, et supprimé entièrement en PHP 7. Si vous avez un code qui exécute MCrypt, vous devez le refactoriser pour utiliser une bibliothèque de cryptage plus moderne.


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

Suis-Je il manque quelques étapes peut-être n'importe quel paramètre en 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
demandé sur GordonM 2010-04-09 04:49:39

17 réponses

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

;extension=php_mcrypt.dll de extension=php_mcrypt.dll

30
répondu Anthony Forloney 2017-08-31 07:00:15

Si vous avez récemment mis à jour ubuntu 14.04 voici la solution à ce problème:

$ sudo mv /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
$ sudo php5enmod mcrypt
$ sudo service apache2 restart
87
répondu flor 2014-05-29 06:19:57

Pour windows

;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 apache2 restart

27
répondu Sabbir 2018-02-05 04:56:24

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.


Dans 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
répondu dkamins 2014-10-05 00:36:01

Sous Ubuntu j'ai eu le problème et l'ai résolu avec

$ sudo apt-get install php5-mcrypt
$ sudo service apache2 reload
11
répondu Pierre de LESPINAY 2014-04-28 11:22:45

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
répondu alphayax 2014-11-26 13:21:41

Sous Linux Mint 17.1 Rebecca-appel à la fonction indéfinie mcrypt_create_iv...

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

extension=mcrypt.so

Après cela, un

service apache2 restart

Résolu...

5
répondu Phil Lawlor 2015-06-12 15:39:09

Si vous utilisez PHP 7.2 ou supérieur:

Cette fonction a été dépréciée en PHP 7.1.0, et supprimée en PHP 7.2.0.

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

Vous devez donc remplacer le code php et trouver une solution sans mcrypt.

4
répondu Fabian Thommen 2018-05-18 15:03:32

Mcrypt est-il activé? Vous pouvez utiliser phpinfo() pour voir si elle est.

3
répondu John Conde 2010-04-09 00:55:24

Encore une chose: si vous servez PHP via un serveur web tel Qu'Apache, essayez de redémarrer le serveur web. Cela "réinitialisera" tous les modules PHP qui pourraient être présents, activant la nouvelle configuration.

3
répondu Mei 2011-06-24 16:09:02

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 j'ai ssh'ed.)

Je suggère de prendre des conseils @ 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 la version de PHP PHP Version 5.3.10-1ubuntu3.4, si vous ouvrez phpinfo () comme suggéré par @ John Conde, ce que vous faites en créant un fichier de test sur le serveur web (par exemple, créer une page d'état testphp.php avec juste le contenu "" accessible partout sur le serveur via un navigateur)

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

J'ai basculé cela d'avant en arrière et redémarré Apache (Je cours Apache2 et vous pouvez redémarrer dans ma configuration avec sudo /etc/init.d/apache2 restart ou quand vous êtes dans ce répertoire juste sudo restart je crois) avec changement et sans changement, mais tous pas aller. Je a pris des conseils @ dkamins et est allé installer le paquet avec "sudo apt-get install php5-mcrypt", puis redémarré apache comme ci-dessus. Alors mon erreur a disparu et ma demande a bien fonctionné.

3
répondu beiping_troop 2012-10-19 12:22:47

Si vous utilisez php5-fpm, remeber pour le redémarrer, après avoir installé mcrypt

Service php5-fpm redémarrer

3
répondu nicky 2015-10-12 11:36:43

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

Vérifiez d'abord que php5-mcryp est déjà installé apt-get install php5-mcrypt

S'il est installé, exécutez simplement cette commande à deux ou installez et exécutez cette commande à deux

$ sudo php5enmod mcrypt
$ sudo service apache2 restart

J'espère que ça marchera.

3
répondu Rajesh Jai 2016-05-20 12:56:36

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)
3
répondu Ahmad Vaqas Khan 2017-03-23 11:29:47

Pour Linux (Fedora)

yum -y install php-mcrypt

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

systemctl restart httpd.service

Fait!

1
répondu Somwang Souksavatd 2013-09-14 14:11:09

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

sudo apt-get purge php5-mcrypt

Et réinstallez-le simplement:

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 comment cela était 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...

1
répondu Heisoka 2016-09-08 08:06:57

Vérifiez et installez php5-mcrypt:

sudo apt-get install php5-mcrypt
0
répondu Fabricio 2015-05-05 20:54:23