Неустранимая ошибка: Вызов неопределенной функции mcrypt encrypt()


ПРИМЕЧАНИЕ: Библиотеки, от которых зависит поддержка MCrypt, не обновлялись годами, и MCrypt больше не следует считать жизнеспособным или безопасным методом шифрования данных. Более того, MCrypt устарел в PHP 5 и полностью удален в PHP 7. Если у вас есть какой-либо код, который запускает MCrypt, вам следует переработать его, чтобы использовать более современную библиотеку шифрования.


Кто-нибудь знает, почему это сообщение об ошибке: (Call to undefined function mcrypt_encrypt() ) отображается, когда я выполняю следующий код ниже?

Я Я пропустил некоторые шаги, возможно, какие-либо настройки в PHP, которые я должен выполнить, прежде чем этот код сможет работать?

$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

То, что сработало для меня с PHP версии 5.2.8, заключалось в том, чтобы открыть php.ini и разрешить расширение php_mcrypt.dll, удалив ;, т.Е. изменив:

;extension=php_mcrypt.dll к extension=php_mcrypt.dll

 30
Author: Anthony Forloney, 2017-08-31 07:00:15

Если вы недавно обновили ubuntu до 14.04, вот решение этой проблемы:

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

Для Windows

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

Для Красной шляпы

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

Для Ubuntu

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

Все еще не работает?

Sudo php5enmod mcrypt &&перезапуск службы sudo apache2

 27
Author: Sabbir, 2018-02-05 04:56:24

У вас не установлена библиотека mcrypt.

См. http://www.php.net/manual/en/mcrypt.setup.php для получения дополнительной информации.

Если вы находитесь на общем хостинге, вы можете попросить своего провайдера установить его.


В OSX вы можете легко установить mcrypt с помощью homebrew

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

Затем добавьте эту строку в /etc/php.ini.

extension="/usr/local/Cellar/php54-mcrypt/5.4.24/mcrypt.so"
 18
Author: dkamins, 2014-10-05 00:36:01

В Ubuntu у меня была проблема, и я решил ее с помощью

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

В ubuntu 14.10:

Установить модуль mcrypt

sudo apt install php5-mcrypt

Включить модуль mcrypt на apache2

sudo a2enmod mcrypt

Перезагрузить конфигурацию модуля

sudo service apache2 restart
 7
Author: alphayax, 2014-11-26 13:21:41

В Linux Mint 17.1 Ребекка - Вызов неопределенной функции mcrypt_create_iv...

Решается путем добавления следующей строки в php.ini

extension=mcrypt.so

После этого

service apache2 restart

Решил эту проблему...

 5
Author: Phil Lawlor, 2015-06-12 15:39:09

Если вы используете PHP 7.2 или выше:

Эта функция УСТАРЕЛА в PHP 7.1.0 и УДАЛЕНА в PHP 7.2.0.

Источник: http://php.net/manual/en/function.mcrypt-encrypt.php

Таким образом, вам нужно заменить php-код и найти решение без mcrypt.

 4
Author: Fabian Thommen, 2018-05-18 15:03:32

Включен ли mcrypt? Вы можете использовать phpinfo() чтобы увидеть, так ли это.

 3
Author: John Conde, 2010-04-09 00:55:24

Еще одно: если вы обслуживаете PHP через веб-сервер, такой как Apache, попробуйте перезапустить веб-сервер. Это приведет к "сбросу" всех модулей PHP, которые могут присутствовать, активируя новую конфигурацию.

 3
Author: Mei, 2011-06-24 16:09:02

Предполагая, что вы используете debian linux (я использую Linux mint 12, проблема была на сервере Ubuntu 12.04.1 LTS, на который я подключился по ssh.)

Я предлагаю воспользоваться советом @dkamins и убедиться, что у вас установлен и активен mcrypt при установке php5. Используйте "sudo apt-get установить php5-mcrypt" для установки. Мои заметки ниже.

Используя версию PHP PHP Version 5.3.10-1ubuntu3.4, если вы откроете phpinfo(), как предложил @John Conde, что вы делаете, создавая тестовый файл на веб-сервере (например, создаете страницу статуса testphp.php с только содержимое""в любом месте, доступном на сервере через браузер)

Я не обнаружил наличия включенного или отключенного статуса на странице статуса при открытии в браузере. Когда я затем открыл файл php.ini, упомянутый @Anthony Forloney, думая раскомментировать ;extension=php_mcrypt.dll to extension=php_mcrypt.dll

Я переключил это туда и обратно и перезапустил Apache (я запускаю Apache2, и вы можете перезапустить мою настройку с помощью sudo /etc/init.d/apache2 restart или, когда вы находитесь в этом каталоге, просто sudo restart Я верю) с переменами и без перемен, но все без толку. Я последовал совету @dkamins и пошел устанавливать пакет с помощью "sudo apt-get install php5-mcrypt", а затем перезапустил apache, как указано выше. Затем моя ошибка исчезла, и мое приложение работало нормально.

 3
Author: beiping_troop, 2012-10-19 12:22:47

Если вы используете php5-fpm, не забудьте перезапустить его после установки mcrypt

Перезапуск службы php5-fpm

 3
Author: nicky, 2015-10-12 11:36:43

Если вы используете ubuntu 14.04, вот решение этой проблемы:

Сначала проверьте, что php5-mcryp уже установлен apt-get install php5-mcrypt

Если установлено, просто запустите эти две команды или установите и запустите эти две команды

$ sudo php5enmod mcrypt
$ sudo service apache2 restart

Я надеюсь, что это сработает.

 3
Author: Rajesh Jai, 2016-05-20 12:56:36

У меня была та же проблема с PHP 7 версией отсутствующего mcrypt.

Это сработало для меня.

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, 2017-03-23 11:29:47

Для Linux на базе (Fedora)

yum -y install php-mcrypt

Включите модуль, добавив:'extension=mcrypt.so 'в PHP.ini. (/etc/php.ini)

systemctl restart httpd.service

Готово!

 1
Author: Somwang Souksavatd, 2013-09-14 14:11:09

Для меня это помогло удалить mcrypt с помощью:

sudo apt-get purge php5-mcrypt

И просто переустановите его:

sudo apt-get install php5-mcrypt

И не забудьте перезапустить apache, как описано выше.

Не знаю, почему и как это было иначе в моем случае (использование виртуальной машины с подготовленным php55), но, возможно, это поможет кому-то другому. У меня также была эта проблема с некоторыми другими модулями, такими как xcache...

 1
Author: Heisoka, 2016-09-08 08:06:57

Проверьте и установите php5-mcrypt:

sudo apt-get install php5-mcrypt
 0
Author: Fabricio, 2015-05-05 20:54:23