Неможливо отримати mcrypt для PHP5


29

Я робив це багато разів:

sudo aptitude install php5-mcrypt

sudo apache2ctl restart

здатність говорить, що встановлено mcrypt. Я перевстановив його вже 3 рази. Я перезапустив апаш близько 20 разів з моменту встановлення. Переглядаючи phpInfo, я не бачу mcrypt у списку. Коли я намагаюся виконати свій код, він каже, що функція mcrypt (виберіть одну - будь-яку) не існує. mcrypt явно не ввімкнено.

Хтось має уявлення, що може бути не так? Я не знаю, які твори повинні бути, де і як все це повинно вміститися разом.

Я встановив PHP 5.5.3


Ви також встановили PHP від ​​менеджера пакунків ( apt-get/ aptitude)? Пакет php5-mcryptможе налаштувати розширення лише для php.inis, про яке "знає". По-друге, я зараз не apache2ctlпереробляю модулі. "Нормальний" спосіб перезапустити Apache був би чимось на кшталт sudo service apache2 restart. По-третє, як PHP пов'язаний з вашим Apache? Якщо ви використовуєте щось на зразок (f) cgi або php-fpm (на відміну від mod-php), ймовірно, вам доведеться перезапустити PHP самостійно, додатково до перезавантаження Apache.
Геннінг Кокербек

Ми встановили все, використовуючи здатність. apache2ctl зупиняє і відновлює apache. Ми кілька разів перезапустили комп’ютер після цих встановлень. Повірте мені, коли я кажу, що apache було "перезапущено", оскільки ми встановили php5-mcrypt - як і PHP. PHP5 чудово працює як модуль apache - це веб-сайт, написаний на PHP - тому я припускаю, що PHP встановлений як модуль apache. Якщо я перейду до / etc / apache2 / mods, що підтримує php5, є у цьому списку. Я не бачу mcrypt в / etc / php5 / mods-доступному, але якщо я роблю пошук sudo здатності mcrypt, я бачу встановлені 3 речі: libmcypt4, mcrypt та php5-mcrypt - ????
webDeveloperDave

Що php.iniзазначено у висновку phpinfo(приблизно з 5 по 7 запис)? Це має бути файл у /etc/php5/. Якщо ви шукаєте у цьому файлі mcrypt, що з'являється?
Геннінг Кокербек

php.ini знаходиться в /etc/php5/apache2/php.ini, там є розділ mcrypt з двома налаштуваннями - обидва коментуються - mcrypt.algorithms_dir та mcrypt.modes_dir коментарі над ними кажуть, що за замовчуванням є / usr / local / lib / libmcrypt - цих каталогів не існує. Це те, що спочатку втягнуло мене в той факт, що mcrypt може бути не встановлений, хоча здібність говорить, що це так. Якщо я вказую інформацію про здатність sudo mcrypt говорить про те, що встановлений стан пакета - версія 2.6.8-1.3 - він говорить Конфлікти: mcrypt - так що це говорить? що цей пакет конфліктує сам з собою? Чи є кращий спосіб шифрування інформації про користувача?
webDeveloperDave

Вам не потрібно дбати про mcryptпакет. Це програма командного рядка, яка використовує libmcrypt, як і розширення PHP. Тому потрібно переконатися, що пакет libmcrypt4встановлений. Чи є php.iniфрагмент /etc/php5/conf.d/mcrypt.ini? Це повинно навантажити вагу. Це фрагмент завантажений PHP (див. phpinfo)? Знову ж таки, ви намагалися перезапустити Apache sudo service apache2 restartзамість apache2ctl?
Геннінг Кокербек

Відповіді:


62

Спробуйте це

sudo php5enmod mcrypt

sudo service apache2 restart

Працював чудово, і посилання на сім (для копіювання цілої речі) для мене +1. Так прихильне!
Стефано Мтангу

4
Це працювало для мене. Але мені не потрібна була перша команда (ln). У папці /etc/php5/apache/conf.d у мене не було mcrypt.ini. Працює mcrypt sudo php4enmod. Подайте файл зараз. Сервер працює !. Дуже дякую.
peterept

1
Дякуємо, що працює добре. Але я хочу знати про команду, що ви використовували "sudo php5enmod mcrypt" .. Що це таке? Яка мета використання цієї команди ..?
Елаварасан

1
"sudo php5enmod mcrypt" створить символьне посилання в каталозі "/etc/php5/conf.d" з номером пріоритету (за замовчуванням 20), щоб ви могли його видалити без зміни файлів ini за допомогою "sudo php5dismod mcrypt"
Vizjerai

11

У Ubuntu 13.10 у мене була подібна проблема. Після запуску композитора встановив таку саму помилку, що закінчується.

****Mcrypt PHP extension required.
Script php artisan clear-compiled handling the post-update-cmd event returned with an error

  [RuntimeException]  
  Error Output:****   

Я встановив mcryptі php5-mcryptз придатністю, і досі php -mне відображався mcryptяк завантажене розширення:

aptitude install mcrypt
aptitude install php5-mcrypt

Я побіг updatedb, і тоді locate mcrypt. Я знайшов своє mcrypt.iniв /etc/php5/conf.d. Однак усі інші розширення (наприклад, json) мали свої .ini файли у /etc/php5/apache2/conf.dта /etc/php5/cli/conf.d. Це обидва були посиланнями на ../../mods.available.

Тоді я перейшов mcrypt.iniдо /etc/php5/available-modulesта встановив посилання:

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

І аналогічно для /etc/php5/apache2/conf.d.

І вуаля, він з'явився в php -m!


Дуже дякую за цю відповідь. Повністю розібрав мене. Хоча я не перемістив /etc/php5/conf.d/mcrypt.ini - я просто встановив свої символічні посилання, щоб вказати на те місце, яке також працювало і, імовірно, забезпечить автоматичне завантаження майбутніх оновлень до mcrypt?
alexleonard

2

Схоже, відсутній фрагмент ini, який завантажує libmcrypt, коли PHP викликається Apache, відсутній. Повинен бути файл, викликаний /etc/php5/apache2/conf.d/mcrypt.iniіз таким вмістом

; configuration for php MCrypt module
extension=mcrypt.so

Ви можете мати змогу скопіювати його з інших фондів інтеграції PHP, таких як /etc/php5/cli/conf.d/mcrypt.iniабо /etc/php5/conf.d/mcrypt.ini, залежно від того, що встановлено у вашій системі.


2

Модуль mcrypt за умовчанням не включений. Увімкніть модуль mcrypt, а потім перезапустіть apache ( кредит )

sudo php5enmod mcrypt
sudo service apache2 restart

1

Ну, це все. Схоже, іноді ми шукаємо найбільш заплутаний спосіб зробити щось таке просте, як "enmod"; ) Як Boinst каже: sudo php5enmod mcrypt. Потім перезавантажте апаш.

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