Ответ 1
Что работало для меня с PHP версии 5.2.8, было открыть php.ini
и разрешить расширение php_mcrypt.dll
, удалив ;
, т.е. изменив:
;extension=php_mcrypt.dll
to extension=php_mcrypt.dll
ПРИМЕЧАНИЕ. Поддержка 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)));
Что работало для меня с PHP версии 5.2.8, было открыть php.ini
и разрешить расширение php_mcrypt.dll
, удалив ;
, т.е. изменив:
;extension=php_mcrypt.dll
to 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 - вызов функции undefined mcrypt_create_iv...
Решено, добавив следующую строку в php.ini
extension=mcrypt.so
После этого a
service apache2 restart
решил это...
Включен ли mcrypt? Вы можете использовать phpinfo()
, чтобы узнать, есть ли это.
Еще одна вещь: если вы используете PHP через веб-сервер, такой как Apache, попробуйте перезапустить веб-сервер. Это будет "reset" любые 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
Я надеюсь, что это сработает.
У меня была такая же проблема для версии 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)
для 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