69 Stimmen

Fataler Fehler: Aufruf einer undefinierten Funktion mcrypt_encrypt()

HINWEIS: Die Bibliotheken, von denen die MCrypt-Unterstützung abhängt, sind seit Jahren nicht mehr aktualisiert worden, und MCrypt sollte nicht länger als praktikable oder sichere Methode zur Verschlüsselung von Daten angesehen werden. Darüber hinaus wurde MCrypt in PHP 5 veraltet und in PHP 7 vollständig entfernt. Wenn Sie Code haben, in dem MCrypt verwendet wird, sollten Sie ihn überarbeiten und eine modernere Verschlüsselungsbibliothek verwenden.


Weiß jemand, warum diese Fehlermeldung: (Call to undefined function mcrypt_encrypt() ) angezeigt, wenn ich den folgenden Code ausführe?

Übersehe ich einige Schritte, vielleicht eine Einstellung in PHP, die ich vornehmen muss, bevor dieser Code funktionieren kann?

$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)));

0 Stimmen

Welche Version von PHP verwenden Sie?

0 Stimmen

Vielleicht haben Sie PHP 4.0.1, dies ist eine 4.0.2 Funktion. Läuft hier richtig.

5 Stimmen

Ich habe die Version 5.2.8 und erhalte ebenfalls den Fehler "undefinierte Funktion".

89voto

flor Punkte 991

Wenn Sie kürzlich auf Ubuntu 14.04 aktualisiert haben, finden Sie hier die Lösung für dieses Problem:

$ sudo mv /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
$ sudo php5enmod mcrypt
$ sudo service apache2 restart

37voto

Anthony Forloney Punkte 87227

Was bei mir mit der PHP-Version 5.2.8 funktioniert hat, war das Öffnen von php.ini und ermöglichen die php_mcrypt.dll Erweiterung durch Entfernen des ; d.h. ändern:

;extension=php_mcrypt.dll a extension=php_mcrypt.dll

33voto

Sabbir Punkte 1354

Für Windows

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

Für 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

Für Ubuntu

sudo apt-get install php5-mcrypt
sudo service apache2 restart //if server not reloaded automatically 

Funktioniert es immer noch nicht?

sudo php5enmod mcrypt && sudo service apache2 restart

24voto

Martin Krung Punkte 1088

Wenn Sie PHP 7.2 oder höher verwenden:

Diese Funktion wurde in PHP 7.1.0 DEPRECATED und in PHP 7.2.0 ENTFERNT.

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

Sie müssen also den php-Code ersetzen und eine Lösung ohne mcrypt finden.

Oder, ich habe gerade herausgefunden, dass man mcrypt auch in PHP 7.2.0 verwenden kann, aber man muss es als PHP Extension Community Library installieren. ( https://pecl.php.net/ )

Auf Debian/Ubuntu Linux-Distributionen:

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

dann:

sudo pecl install mcrypt-1.0.1

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

19voto

dkamins Punkte 20856

Sie haben die mcrypt-Bibliothek nicht installiert.

Siehe http://www.php.net/manual/en/mcrypt.setup.php für weitere Informationen.

Wenn Sie ein Shared Hosting nutzen, können Sie Ihren Provider bitten, es zu installieren.


Unter OSX können Sie mcrypt einfach über Homebrew installieren

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

Fügen Sie dann diese Zeile in /etc/php.ini ein.

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X