Fatal error: Call to undefined function mcrypt_encrypt ()
Frage
Hinweis: Die Bibliotheken MCrypt Unterstützung angewiesen ist auf seit Jahren nicht mehr aktualisiert worden und MCrypt sollte nicht länger eine tragfähige oder sichere Methode zur Verschlüsselung von Daten in Betracht gezogen werden. Was mehr ist, in PHP 5 und entfernt vollständig in PHP veraltet 7. MCrypt wurde Wenn Sie Code haben, läuft MCrypt Sie es Refactoring sollte eine modernere Verschlüsselungsbibliothek zu verwenden.
Wer weiß, warum diese Fehlermeldung:? (Call to undefined function mcrypt_encrypt() )
wird angezeigt, wenn ich den folgenden Code unter
Bin ich einige Schritte vielleicht eine Einstellung in PHP ich gefehlt haben zu tun, bevor dieser Code arbeiten 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)));
Lösung
Was für mich mit PHP Version 5.2.8 gearbeitet hatte, war php.ini
zu öffnen und ermöglichen die php_mcrypt.dll
Erweiterung durch die ;
entfernen, das heißt zu ändern:
;extension=php_mcrypt.dll
zu extension=php_mcrypt.dll
Andere Tipps
Wenn Sie vor kurzem auf ubuntu aktualisiert 14.04 hier ist das Update für dieses Problem:
$ sudo mv /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
$ sudo php5enmod mcrypt
$ sudo service apache2 restart
Für Fenster
;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
Immer noch nicht?
sudo php5enmod mcrypt && sudo Service apache2 restart
Sie haben nicht die mcrypt Bibliothek installiert ist.
Siehe http://www.php.net/manual/en/ mcrypt.setup.php für weitere Informationen.
Wenn Sie auf Shared-Hosting sind, können Sie Ihren Provider bitten, es zu installieren.
In OSX können Sie ganz einfach installieren mcrypt über Homebrew
brew install php54-mcrypt --without-homebrew-php
Dann fügen Sie diese Zeile zu /etc/php.ini.
extension="/usr/local/Cellar/php54-mcrypt/5.4.24/mcrypt.so"
Wenn Sie mit PHP 7.2 oder oben:
Diese Funktion war DEPRECATED in PHP 7.1.0 und ENTFERNT in PHP 7.2.0.
Quelle: http://php.net/manual/en/function. mcrypt-encrypt.php
So haben Sie den PHP-Code zu ersetzen und eine Lösung ohne mcrypt finden.
Oder ich habe gerade herausgefunden, Sie STILL mcrypt in PHP 7.2.0 verwenden können, aber Sie müssen es als eine Bibliothek PHP-Erweiterung der Gemeinschaft installieren. ( https://pecl.php.net/ )
Unter 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
Quelle: https: // www .techrepublic.com / article / how-to-install-mcrypt-for-php-7-2 /
Unter Ubuntu Ich hatte das Problem und löste es mit
$ sudo apt-get install php5-mcrypt
$ sudo service apache2 reload
Auf ubuntu 14.10:
Installieren Modul mcrypt
sudo apt install php5-mcrypt
Aktivieren Modul mcrypt auf apache2
sudo a2enmod mcrypt
Reload Modulkonfiguration
sudo service apache2 restart
Auf Linux Mint 17,1 Rebecca - Call to undefined function mcrypt_create_iv ...
Gelöst indem Sie die folgende Zeile in die php.ini
extension=mcrypt.so
Danach ein
service apache2 restart
löste es ...
Ich hatte das gleiche Problem für PHP 7 Version von mcrypt fehlt.
Das ist für mich gearbeitet.
sudo apt-get update
sudo apt-get install mcrypt php7.0-mcrypt
sudo apt-get upgrade
sudo service apache2 restart (if needed)
Ist mcrypt aktiviert? Sie können verwenden phpinfo()
zu sehen, ob es ist.
Eine weitere Sache: Wenn Sie PHP über einen Webserver wie Apache dienen, versuchen, den Web-Server neu zu starten. Dies wird „Reset“ all PHP-Module, die vorhanden sein könnten, um die neue Konfiguration zu aktivieren.
Angenommen, Sie debian Linux verwenden (Ich verwende Linux Mint 12, Problem war, auf Ubuntu 12.04.1 LTS Server I ssh'ed in.)
Ich schlage vor, @dkamins Beratung und dafür sorgen, haben Sie mcrypt installiert und aktiv auf php5 installieren. Verwenden Sie "sudo apt-get install php5-mcrypt" zu installieren. Meine Anmerkungen unten.
Mit PHP Version PHP Version 5.3.10-1ubuntu3.4
, wenn Sie offen phpinfo (), wie durch @John Conde vorgeschlagen, die Sie auf Web-Server, indem Testdatei tun (zB Statusseite testphp.php erstellen nur mit dem Inhalt „“ überall zugänglich auf dem Server via Browser)
fand ich keine Anwesenheit von aktivierten oder deaktivierten Status auf der Statusseite, wenn in Browser geöffnet. Als ich dann die php.ini-Datei geöffnet, erwähnt von @Anthony Forloney, zu uncomment ;extension=php_mcrypt.dll to extension=php_mcrypt.dll
Denken
ein- und ich das hin und her und neu gestartet Apache (Ich bin mit Apache2 und Sie können mit sudo /etc/init.d/apache2 restart
in meinem Setup neu starten, oder wenn Sie in diesem Verzeichnis sind nur sudo restart
glaube ich)
mit Umsteigen und ohne Änderung aber alle nicht gehen. Ich nahm @dkamins Beratung und ging das Paket mit „sudo apt-get install php5-mcrypt“ und dann neu gestartet Apache wie oben zu installieren. Dann wurde mein Fehler gegangen und meine Anwendung hat gut funktioniert.
Wenn Sie mit php5-fpm Erinnern es neu zu starten, nach der Installation von mcrypt
Service php5-fpm Neustart
Wenn Sie Ubuntu 14.04 ist hier das Update für dieses Problem mit:
Überprüfen Sie zunächst, php5-mcryp bereits installiert apt-get install php5-mcrypt
Wenn installiert, nur diese zwei Befehle ausführen oder installieren und ausführen dieses zwei Befehle
$ sudo php5enmod mcrypt
$ sudo service apache2 restart
Ich hoffe, es wird funktionieren.
für Linux-basierte (Fedora)
yum -y install php-mcrypt
Aktivieren Sie das Modul durch Hinzufügen: 'extension = mcrypt.so' zu PHP.ini. (/Etc/php.ini)
systemctl restart httpd.service
Fertig!
Für mich ist es zu deinstallieren mcrypt half mit:
sudo apt-get purge php5-mcrypt
und es einfach neu zu installieren:
sudo apt-get install php5-mcrypt
und vergessen Sie nicht, Apache neu zu starten, wie oben beschrieben.
Sie nicht wissen, warum und wie dies in meinem Fall anders war (eine vm mit provisioniert php55 verwenden), aber vielleicht hilft jemand anderes. Ich hatte auch dieses Problem mit einigen anderen Modulen wie xcache ...
Überprüfen und php5-mcrypt installieren:
sudo apt-get install php5-mcrypt