Расширение Mcrypt отсутствует на сервере 14.04 для mysql

112

Расширение php mcrypt в Ubuntu 14.04 показывает, что оно установлено правильно, но phpmyadmin говорит:

 The mcrypt extension is missing. Please check your PHP configuration.

Моя текущая конфигурация php здесь . Если вам нужна дополнительная информация, пожалуйста, свяжитесь со мной через комментарии.

$ sudo apt-get install php5-mcrypt
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    php5-mcrypt is already the newest version.
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
matthapkidokarate
источник
7
Принятый ответ не лучшая практика. Самый простой и правильный ответ: http://askubuntu.com/a/477608/139249 также имеет наибольшее количество голосов.
Майк Стюарт
Для других, самый простой ответ не работал для меня. php5enmod mcryptзаморозил апач. php5dismod mcryptосвободил это снова. Я пошел с принятым ответом и изменил путь для extension=..и на этот раз php5enmod mcryptработал. Так что да, это всеобъемлющее и должно быть принятым ответом.
Оливер Уильямс

Ответы:

138

Попробуй это:

sudo updatedb 
locate mcrypt.ini

Должен показать его в / etc / php5 / mods-available

locate mcrypt.so

Отредактируйте mcrypt.ini и измените расширение в соответствии с путем к mcrypt.so, например:

extension=/usr/lib/php5/20121212/mcrypt.so

Теперь это:

sudo php5enmod mcrypt - (optional since its already enabled during phpmyadmin setup)

Убедитесь, что новые файлы существуют здесь (они должны быть автоматически созданы из проблемы выше)

ls -al /etc/php5/cli/conf.d/20-mcrypt.ini
ls -al /etc/php5/apache2/conf.d/20-mcrypt.ini

В противном случае сделайте следующее

Создайте символьные ссылки сейчас

sudo ln -s /etc/php5/mods-available/mcrypt.ini /etc/php5/cli/conf.d/20-mcrypt.ini
sudo ln -s /etc/php5/mods-available/mcrypt.ini /etc/php5/apache2/conf.d/20-mcrypt.ini

Перезапустите Apache

sudo service apache2 restart

Перезапустите php5 или php5-fpm.

sudo service php5 restart
Kevsin
источник
Это не верно! Я думаю, что вы имели в виду что-то вроде: sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini а не наоборот.
волчий рассвет
14
Дела просто php5enmod mcryptсработали для меня.
diosney
3
Запуск php5enmod mcryptсоздаст эти символические ссылки для вас. Не нужно делать это вручную (то есть вы можете пропустить ln -sкоманды).
Серрано
1
работает php5enmod mcryptправильно в Ubuntu / Debian. Этот ответ, хотя и будет работать, является громоздким и не лучшей практикой.
Майк Стюарт
1
многие из вышеперечисленных шагов не нужны. Смотрите ответ @ MURATSPLAT.
Raptor
155

Попробуйте просто сделать это:

sudo php5enmod mcrypt

А потом:

sudo service apache2 restart 

Я установил свежую Ubuntu 14.04 (настольная версия) на свой компьютер. Этот способ работает для включения mcrypt, который уже был установлен.

MURATSPLAT
источник
5
Обратите внимание, если вы используете nginx с php5-fpm - тогда php5-fpm service restart(или перезагрузите, если он наконец-то исправлен)
Майк Стюарт
2
Эти две команды делают следующее: в 1-й строке включается модуль с именем «mcrypt», а затем перезапускаем apache2 для обновления конфигурации. Вы можете увидеть включенный модуль из /etc/apache2/mods-available. Наслаждайтесь
лампой
sudo service apache2 reloadдостаточно, никакого фактического перезапуска не требуется (во всяком случае, на 14.04 это я и попробовал)
Jasper
55

Установите mcryptрасширение для PHP, включите его и перезапустите Apache. Ниже приведены команды для выполнения:

sudo apt-get install mcrypt php5-mcrypt
sudo php5enmod mcrypt
sudo service apache2 restart
thucnguyen
источник
1
Просто. Отлично. Работает без проблем, по крайней мере, для меня на Ubuntu 14.04.1 LTS (верный)
Гор
Он работает и на Ubuntu 14.10
Coca Akat
Я бы порекомендовал вам не включать mcryptв первую строку. Он неявно устанавливается как зависимость php5-mcrypt, но если вы явно установите его, apt-get не будет знать, как удалить его, если позже вы решите удалить ph5-mcryptпакет.
Белдаз
@beldaz есть по крайней мере один сервер, на котором php5-mcrypt был установлен согласно apt-get, но mcrypt отсутствовал из-за того, что модуль pnp не был включен, что приводило к проблеме установки joomla. поэтому включение mcrypt имеет смысл для меня.
tagMacher 21.09.16
6

Php5-Mcrypt Ubuntu пакет установить конфигурационный файл mcrypt.iniв /etc/php5/conf.d/котором находится старый макет каталога PHP конфигурации.

Текущий способ работы для включения модулей в PHP5 - это поместить ini-файлы в /etc/php5/mods-availableкаталог. Затем, чтобы включить модуль в PHP5, вы должны создать символическую ссылку на соответствующие ini-файлы из /etc/php5/apache2/conf.dкаталога, чтобы включить модуль, когда PHP используется под Apache или / и из, /etc/php5/cli/conf.dесли вы хотите, чтобы этот модуль был включен, когда вы используете PHP за пределами Apache, в скриптах запускается из командной строки или из crontab.

Также обратите внимание, что в conf.dкаталоге вы можете создать ссылку на INI-файл, поставив перед ним номер, чтобы модули загружались в определенном порядке. Полезно, когда вам нужно загрузить модуль в зависимости от другого.

Конечно, не забудьте перезапустить Apache, если вы включили модуль для Apache:

 sudo service apache2 restart
Benoit
источник
4

Нужна только установка моего сервера 14.04 (после установки php5-mcrypt)

sudo php5enmod mcrypt
sudo service apache2 restart
Джон
источник
3

Если проблема все еще возникает,

включить модуль, добавив: extension=mcrypt.soв

/etc/php5/cli/php.ini

а также

/etc/php5/apache2/php.ini

snickers2k
источник
1
Для меня добавление 'extension = mcrypt.so' сработало после установки mcrypt. Lubuntu 14.04 Трасти Тар
Клин Дсилва
Это работает и НАМНОГО проще, чем принятый ответ ... который также сломается при обновлении.
Eric
Я следовал всем инструкциям здесь и в других местах, но тщетно. Ubuntu 14.04.3 - PHP 5.5.9-1ubuntu4.14 - nginx / 1.8.1 - Версия сервера: 5.7.10 - MySQL - Версия клиента базы данных: libmysql - 5.5.47 - Версия phpMyAdmin: 4.0.10deb1 .... у кого есть идеи?
Jadeye
2

В Ubuntu 16.04 LTS, чтобы включить модуль mcrypt, с php 5.6:

sudo apt-get install mcrypt
sudo apt-get install php5.6-mcrypt
sudo phpenmod mcrypt

или с php 7.0:

sudo apt-get install mcrypt
sudo apt-get install php7.0-mcrypt
sudo phpenmod mcrypt

а потом

sudo service apache2 restart
Ромуло ZC Cunha
источник
1

С PHP 7

sudo apt-get install php-mcrypt
sudo phpenmod mcrypt
sudo /etc/init.d/apache2 restart
madeye
источник
$ sudo phpenmod mcrypt ВНИМАНИЕ: ini-файл модуля mcrypt не существует в /etc/php/7.1/mods-available
Евгений Афанасьев
$ sudo /etc/init.d/apache2 перезапустите sudo: /etc/init.d/apache2: команда не найдена
Евгений Афанасьев
0

Вы должны иметь возможность установить расширение mcrypt для PHP, выполнив:

sudo apt-get install php5-mcrypt
jkt123
источник
ну, это говорит о том, что он (командная строка) установлен правильно, но он как-то отсутствует на сервере, как упоминалось выше
matthapkidokarate
1
@ jkt123: Я заметил, что когда вы устанавливаете в Ubuntu какой-то php-модуль, такой как php5-mcrypt, все файлы появляются позже, но модуль не включается в основной конфигурации PHP. Вы должны активировать его вручную, как описано в принятом ответе.
Бенуа
это не работает без добавления расширения = mcrypt.so в php.ini
Эрик
0

Обратите внимание, что в Ubuntu 14.04 php5-mcrypt находится в хранилище юниверсов, которое можно отключить. В этом случае для его установки необходимо включить репозиторий с помощью:

sudo add-apt-repository universe
salgua
источник
0

Вам необходимо включить модуль mcrypt:

sudo php5enmod mcrypt
sudo service apache2 restart
Дебанжан Рой
источник
0

Это лучший способ добавить расширение php 5.5 mcrypt на Ubuntu 14.04 Server.

sudo apt-get install php5-mcrypt
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available
sudo php5enmod mcrypt 
sudo service apache2 restart
Vigyanlabs Inc
источник
0

Ответ @ Кевсина сработал для меня, но мне пришлось запустить mkdir -p /etc/php5/apache2/conf.d/и вручную запустить, sudo ln -s /etc/php5/mods-available/mcrypt.ini /etc/php5/apache2/conf.d/20-mcrypt.iniчтобы приступить к работе. sudo php5enmod mcryptотлично работал для первой символической ссылки.

Примечание: я использую PHP5-FPM. Это могло быть разницей.

ZachLanich
источник
0

Для тех, кто находит это для Ubuntu 16.04 (с использованием PHP7), вот что я сделал, чтобы включить mcrypt:

sudo apt-get install mcrypt php-mcrypt
sudo phpenmod mcrypt
sudo service apache2 restart
Ричард
источник