Фатальная ошибка:Вызов неопределенной функции mcrypt_encrypt()

StackOverflow https://stackoverflow.com/questions/2604435

  •  25-09-2019
  •  | 
  •  

Вопрос

ПРИМЕЧАНИЕ: Библиотеки, от которых зависит поддержка 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)));
Это было полезно?

Решение

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

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

Другие советы

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

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

Для окон

;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 service apache2 перезапустить

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

Видеть http://www.php.net/manual/en/mcrypt.setup.php Чтобы получить больше информации.

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


В OSX вы можете легко установить mcrypt через доморощенный вариант.

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

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

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

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

Эта функция была устарена в PHP 7.1.0 и удалена в PHP 7.2.0.

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

Таким образом, вы должны заменить код PHP и найти решение без Mcrypt.

Или я только что узнал, вы все равно можете использовать Mcrypt в PHP 7.2.0, но вы должны установить его как библиотеку сообщества расширения PHP. (https://pecl.php.net/)

На Debian / Ubuntu Linux Distries:

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

тогда:

sudo pecl install mcrypt-1.0.1

Источник: https://www.techrepublic.com/article/how-to-install-mcrypt-for-php-7-2/

Под убунту у меня была проблема и решила ее с

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

На Ubuntu 14.10:

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

sudo apt install php5-mcrypt

Включить модуль Mcrypt на Apache2

sudo a2enmod mcrypt

Конфигурация модуля перезагрузки

sudo service apache2 restart

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

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

extension=mcrypt.so

После этого А.

service apache2 restart

Решил это ...

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

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

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

Предполагая, что вы используете Debian Linux (я использую Linux Mint 12, проблема была на Ubuntu 12.04.1 LTS Server I SSH'DED.)

Я предлагаю принимать советы @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 Forlenoney, думая, чтобы восемресс ;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, как указано выше. Тогда моя ошибка прошла, и мое приложение отлично работало.

Если вы используете PHP5-FPM, Remeber, чтобы перезапустить его, после установки Mcrypt

Сервис PHP5-FPM перезапустить

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

Первый чек PHP5-MCRYP уже установлен apt-get install php5-mcrypt

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

$ sudo php5enmod mcrypt
$ sudo service apache2 restart

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

для Linux на основе (Fedora)

yum -y install php-mcrypt

Включите модуль, добавив: «Расширение = Mcrypt.so» на php.ini. (/etc/php.ini)

systemctl restart httpd.service

Сделанный!

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

sudo apt-get purge php5-mcrypt

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

sudo apt-get install php5-mcrypt

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

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

Проверьте и установите PHP5-MCRYPT:

sudo apt-get install php5-mcrypt
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top