Błąd krytyczny: wywołanie niezdefiniowanej funkcji mcrypt encrypt()

Uwaga: zależna od bibliotek obsługa MCrypt nie była aktualizowana od lat i MCrypt nie powinien być już uważany za realną lub bezpieczną metodę szyfrowania danych. Co więcej, MCrypt został wycofany w PHP 5 i całkowicie usunięty w PHP 7. Jeśli masz jakiś kod, który uruchamia MCrypt, powinieneś go przefaktorować, aby użyć bardziej nowoczesnej biblioteki szyfrowania.


Czy ktoś wie, dlaczego ten Komunikat o błędzie: (Call to undefined function mcrypt_encrypt() ) wyświetla się, gdy uruchamiam poniższy kod?

Am I brakuje kilku kroków być może jakieś ustawienie w PHP muszę zrobić, zanim ten kod może działać?

$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
Author: GordonM, 2010-04-09

17 answers

To, co zadziałało dla mnie z PHP w wersji 5.2.8, to otwarcie php.ini i Zezwolenie na rozszerzenie php_mcrypt.dll poprzez usunięcie ;, czyli zmianę:

;extension=php_mcrypt.dll do extension=php_mcrypt.dll

 30
Author: Anthony Forloney,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-31 07:00:15

Jeśli niedawno zaktualizowałeś ubuntu 14.04 oto poprawka tego problemu:

$ sudo mv /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
$ sudo php5enmod mcrypt
$ sudo service apache2 restart
 87
Author: flor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-29 06:19:57

Dla windows

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

Dla 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

Dla Ubuntu

sudo apt-get install php5-mcrypt
sudo service apache2 restart //if server not reloaded automatically 
Nadal nie działa?
W tym celu należy skontaktować się z Działem obsługi klienta.]}
 27
Author: Sabbir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-05 04:56:24

Nie masz zainstalowanej biblioteki mcrypt.

Zobacz http://www.php.net/manual/en/mcrypt.setup.php aby uzyskać więcej informacji.

Jeśli korzystasz z hostingu współdzielonego, możesz poprosić swojego dostawcę o jego zainstalowanie.

W OSX możesz łatwo zainstalować mcrypt poprzez homebrew

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

Następnie dodaj tę linię do /etc / php.ini.

extension="/usr/local/Cellar/php54-mcrypt/5.4.24/mcrypt.so"
 18
Author: dkamins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-05 00:36:01

Pod Ubuntu miałem problem i rozwiązałem go z

$ sudo apt-get install php5-mcrypt
$ sudo service apache2 reload
 11
Author: Pierre de LESPINAY,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-28 11:22:45

Na ubuntu 14.10:

Install module mcrypt

sudo apt install php5-mcrypt
Zapraszamy do zapoznania siÄ™ z naszÄ… ofertÄ…]}
sudo a2enmod mcrypt

Reload module configuration

sudo service apache2 restart
 7
Author: alphayax,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-26 13:21:41

W Linuksie Mint 17.1 - wywołanie niezdefiniowanej funkcji mcrypt_create_iv...

Rozwiązane przez dodanie następującej linii do php.ini

extension=mcrypt.so

Po tym a

service apache2 restart
Rozwiązałem to...
 5
Author: Phil Lawlor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-12 15:39:09

Jeśli używasz PHP 7.2 lub up:

Ta funkcja została przestarzała w PHP 7.1.0 i usunięta w PHP 7.2.0.

Źródło: http://php.net/manual/en/function.mcrypt-encrypt.php

Więc musisz zastąpić kod php i znaleźć rozwiązanie bez mcrypt.

 4
Author: Fabian Thommen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-18 15:03:32

Czy mcrypt jest włączony? Możesz użyć phpinfo() żeby sprawdzić, czy jest.

 3
Author: John Conde,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-09 00:55:24

Jeszcze jedno: jeśli obsługujesz PHP za pośrednictwem serwera www, takiego jak Apache, spróbuj ponownie uruchomić serwer WWW. Spowoduje to "zresetowanie" wszystkich modułów PHP, które mogą być obecne, aktywując nową konfigurację.

 3
Author: Mei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-24 16:09:02

Zakładając, że używasz Linuksa Debiana (ja używam Linux mint 12, problem był na Ubuntu 12.04.1 LTS server i ssh ' ended.)

Sugeruję skorzystanie z porad @ DK i upewnienie się, że mcrypt jest zainstalowany i aktywny na instalacji php5. Użyj "sudo apt-get install php5-mcrypt", aby zainstalować. Moje notatki poniżej.

Używając wersji PHP PHP Version 5.3.10-1ubuntu3.4, jeśli otworzysz phpinfo() zgodnie z sugestią @John Conde, co zrobisz tworząc plik testowy na serwerze WWW (np. Utwórz stronę statusu testphp.php z just zawartość "" w dowolnym miejscu dostępnym na serwerze przez przeglądarkę)

Nie znalazłem obecności włączonego lub wyłączonego statusu na stronie statusu po otwarciu w przeglądarce. Kiedy następnie otworzyłem php.plik ini, wymieniony przez @ Anthony Forloney, myślący o odkomentowaniu ;extension=php_mcrypt.dll to extension=php_mcrypt.dll

Jeśli nie masz dostępu do plików cookies, możesz je wyłączyć w ustawieniach swojej przeglądarki internetowej lub w ustawieniach przeglądarki internetowej.) ze zmianą i bez zmiany, ale wszystko nie idzie. I skorzystałem z porady @ DK i poszedłem zainstalować pakiet z "sudo apt-get install php5-mcrypt", a następnie zrestartowałem apache jak wyżej. Potem mój błąd zniknął i moja aplikacja działała dobrze.
 3
Author: beiping_troop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-19 12:22:47

Jeśli używasz php5-fpm, pamiętaj, aby go ponownie uruchomić, po zainstalowaniu mcrypt

Service php5-fpm restart

 3
Author: nicky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-12 11:36:43

Jeśli używasz ubuntu 14.04 oto poprawka tego problemu:

Najpierw sprawdź php5-mcryp jest już zainstalowany apt-get install php5-mcrypt

Jeśli jest zainstalowany, po prostu uruchom te dwa polecenia lub Zainstaluj i uruchom te dwa polecenia

$ sudo php5enmod mcrypt
$ sudo service apache2 restart
Mam nadzieję, że się uda.
 3
Author: Rajesh Jai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-20 12:56:36

Miałem ten sam problem dlaPHP 7 wersja brakującego mcrypta.

To mi pomogło.
sudo apt-get update
sudo apt-get install mcrypt php7.0-mcrypt
sudo apt-get upgrade
sudo service apache2 restart (if needed)
 3
Author: Ahmad Vaqas Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-23 11:29:47

Dla Linuksa (Fedora)

yum -y install php-mcrypt

Włącz moduł dodając: "extension=mcrypt.so' do PHP.ini. (/etc / php.ini)

systemctl restart httpd.service
Zrobione!
 1
Author: Somwang Souksavatd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-14 14:11:09

Dla mnie pomogło odinstalować mcrypt z:

sudo apt-get purge php5-mcrypt

I po prostu zainstaluj go ponownie:

sudo apt-get install php5-mcrypt

I nie zapomnij ponownie uruchomić apache, jak opisano powyżej.

Nie wiem dlaczego i jak było inaczej w moim przypadku( przy użyciu maszyny Wirtualnej z aprowizowanym php55), ale może to pomoże komuś innemu. Miałem również ten problem z innymi modułami, takimi jak xcache...

 1
Author: Heisoka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-08 08:06:57

Sprawdź i zainstaluj php5-mcrypt:

sudo apt-get install php5-mcrypt
 0
Author: Fabricio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-05 20:54:23