Розширення 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.

7
Прийнята відповідь - не найкраща практика. Найпростіші, і правильну відповідь: http://askubuntu.com/a/477608/139249 також має найбільшу кількість голосів.
mike stewart

Для інших довідок, "найпростіша" відповідь для мене не спрацювала. php5enmod mcryptзастиг Apache. php5dismod mcryptзвільнив його знову. Я пішов із прийнятою відповіддю і змінив шлях до extension=..цього часу і php5enmod mcryptспрацював. Так що так, це всеосяжно і має бути прийнятою відповіддю.
Олівер Вільямс

Відповіді:


138

Спробуйте це:

sudo updatedb 
locate mcrypt.ini

Показує, що він знаходиться за адресою / etc / php5 / mods

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

Це неправильно! Я думаю, ти мав на увазі щось на кшталт: sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini А не навпаки.
вовкдаун

14
Робота просто php5enmod mcryptпрацювала для мене плавно.
діосней

3
Біг php5enmod mcryptстворить для вас ті символічні посилання. Не потрібно робити це вручну (тобто ви можете пропустити ln -sкоманди).
Серрано

1
біг php5enmod mcrypt- це правильний спосіб Ubuntu / Debian. Ця відповідь хоч і буде працювати, але громіздка і не найкраща практика.
Майк Стюарт

1
багато кроків вище не потрібні. Дивіться відповідь @ MURATSPLAT.
Раптор

155

Спробуйте просто зробити це:

sudo php5enmod mcrypt

І потім:

sudo service apache2 restart 

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


5
Зауважте, якщо ви працюєте nginx з php5-fpm - тоді php5-fpm service restart(або перезавантажте, якщо він остаточно виправлений)
Майк Стюарт

2
Що ці дві команди роблять, це так: 1-й рядок вмикає модуль під назвою 'mcrypt', а потім перезапускає apache2 для оновлення конфігурації. Ви можете бачити включений модуль з /etc/apache2/mods-available. Насолоджуйтесь LAMP life :)
itiskj

sudo service apache2 reloadдостатньо, фактичний перезапуск не потрібен (все одно 14.04., це те, що я спробував)
Джаспер

55

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

sudo apt-get install mcrypt php5-mcrypt
sudo php5enmod mcrypt
sudo service apache2 restart

1
Простий. Ідеально. Працює без проблем, принаймні для мене на Ubuntu 14.04.1 LTS (випробуваний)
Gor

Він також працює над ubuntu 14.10
Coca Akat

Я рекомендую вам не включати mcryptв свій перший рядок. Він неявно встановлюється як залежність php5-mcrypt, але якщо ви явно встановите його apt-get, не знаєте, як його видалити, якщо згодом вирішите видалити ph5-mcryptпакет.
beldaz

@beldaz є принаймні один сервер, на якому php5-mcrypt був встановлений відповідно до apt-get, але mcrypt відсутній, через що модуль pnp не був увімкнутий, що призводило до проблеми встановлення Joomla. тому включення mcrypt для мене має сенс.
tagMacher

6

У пакеті Ubuntu php5-mcrypt встановіть конфігураційний файл, 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

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


1
Для мене додавання 'extension = mcrypt.so' працювало після встановлення mcrypt. Lubuntu 14.04
Trusty Thar

Це працює і ШЛЯХО простіше, ніж прийнята відповідь ... яка також зламається, коли вона оновлюється.
Ерік

Я дотримувався кожної інструкції тут і в інших місцях, але марно. 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

1

З PHP 7

sudo apt-get install php-mcrypt
sudo phpenmod mcrypt
sudo /etc/init.d/apache2 restart

$ sudo phpenmod mcrypt ПОПЕРЕДЖЕННЯ: Файл mcrypt ini не існує в /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

ну, там сказано, що він (командний рядок) встановлений належним чином, але він якось відсутній на сервері, як згадувалося вище
matthapkidokarate

1
@ jkt123: Я помітив, що при встановленні якогось модуля php, наприклад, php5-mcrypt в Ubuntu, усі файли згодом є, але модуль не включений у головному конфігурації PHP. Активувати його потрібно вручну, як описано у прийнятій відповіді.
Бенуа

це не працює без додавання розширення = mcrypt.so до php.ini
Ерік

0

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

sudo add-apt-repository universe


0

Це найкращий спосіб додати розширення php 5.5 mcrypt на сервер Ubuntu 14.04

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

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. Можливо, це була різниця.


0

Для тих, хто виявляє це, для Ubuntu 16.04 (використовуючи PHP7), ось що я зробив, щоб увімкнути mcrypt:

sudo apt-get install mcrypt php-mcrypt
sudo phpenmod mcrypt
sudo service apache2 restart
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.