ПРИМЕЧАНИЕ. Поддержка 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