Подтвердить что ты не робот

Неустранимая ошибка: вызов функции undefined mcrypt_encrypt()

ПРИМЕЧАНИЕ. Поддержка MCCR библиотек зависит от того, что они не обновлялись годами, а 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)));
4b9b3361

Ответ 1

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

;extension=php_mcrypt.dll to extension=php_mcrypt.dll

Ответ 2

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

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

Ответ 3

Для окон

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

Для 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

Для Ubuntu

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

Если он еще не работает

sudo php5enmod mcrypt && & sudo service apache2 restart

Ответ 4

У вас нет установленной библиотеки 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"

Ответ 5

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

$ sudo apt-get install php5-mcrypt
$ sudo service apache2 reload

Ответ 6

На ubuntu 14.10:

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

sudo apt install php5-mcrypt

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

sudo a2enmod mcrypt

Обновить конфигурацию модуля

sudo service apache2 restart

Ответ 7

В Linux Mint 17.1 Rebecca - вызов функции undefined mcrypt_create_iv...

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

extension=mcrypt.so

После этого a

service apache2 restart

решил это...

Ответ 8

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

Ответ 9

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

Ответ 10

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

Я предлагаю взять совет @dkamins и убедиться, что у вас установлен mcrypt и активен при установке php5. Используйте "sudo apt-get install 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, как указано выше. Затем моя ошибка исчезла, и мое приложение отлично работало.

Ответ 11

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

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

Ответ 12

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

Первая проверка php5-mcryp уже установлена ​​apt-get install php5-mcrypt

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

$ sudo php5enmod mcrypt
$ sudo service apache2 restart

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

Ответ 13

У меня была такая же проблема для версии 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)

Ответ 14

для Linux (Fedora)

yum -y install php-mcrypt

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

systemctl restart httpd.service

Готово!

Ответ 15

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

sudo apt-get purge php5-mcrypt

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

sudo apt-get install php5-mcrypt

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

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

Ответ 16

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

sudo apt-get install php5-mcrypt