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

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

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

В Ubuntu у меня возникла проблема и

 $ 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 

решил …

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

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

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

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

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

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

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

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

 $ sudo php5enmod mcrypt $ sudo service apache2 restart 

Надеюсь, это сработает.

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

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

 sudo apt-get update sudo apt-get install mcrypt php7.0-mcrypt sudo apt-get upgrade sudo service apache2 restart (if needed) 

для Linux (Fedora)

 yum -y install php-mcrypt 

Включите модуль, добавив: 'extension = 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, как описано выше.

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

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

 sudo apt-get install php5-mcrypt