Фатальная ошибка:Вызов неопределенной функции 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)));
Решение
Что работало для меня с 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