Laravel вимагає розширення PHP Mcrypt


429

Я намагаюся використовувати migrateфункцію Laravel 4на OSX. Однак я отримую таку помилку:

Laravel requires the Mcrypt PHP extension.

Наскільки я розумію, це вже ввімкнено (див. Зображення нижче).

Що не так, і як це можна виправити?

введіть тут опис зображення


Чи використовуєте Ви Laravel 3 чи 4?
Січень П.

Щойно додав інформацію до публікації. Це Laravel 4
Patrick Reck

4
Можливо, ця публікація вам допоможе: stackoverflow.com/questions/14476181/…
січень П.

Використовуєте вбудований PHP чи встановили іншу версію? Якщо так, то як ви її встановили?
Джеймі Шембрі

2
Я знайшов це просте рішення, використовуючи домашню мову: jorble.com/2013/04/install-php-mcrypt-in-macosx
gelviis

Відповіді:


288

Розширення з підтримкою Інтернету та розширення з включеним командним рядком можуть відрізнятися. Запустіть php -mу своєму терміналі і перевірте, чи mcryptє в списку. Якщо це не так, перевірте, звідки командний рядок завантажує ваш php.iniфайл, запустивши php --iniз вашого терміналу.

У цьому php.iniфайлі ви можете включити розширення.

OSX

Я чув, що люди на OSX стикаються з проблемами через термінал, що вказує на рідну PHP, що постачається з OSX. Натомість слід оновити свій bash-профіль, щоб включити фактичний шлях до PHP. Щось подібне (я фактично не використовую OSX, тому це може бути не 100%):

export PATH=/usr/local/php5/bin:$PATH

Ubuntu

У попередніх версіях Ubuntu (до 14.04) при запуску sudo apt-get install php5-mcryptвін фактично не встановлює розширення в mods-available. Вам знадобиться позначити його.

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

У всіх версіях Ubuntu вам потрібно буде включити мод після його встановлення. Ви можете це зробити за допомогою php5enmod.

sudo php5enmod mcrypt
sudo service apache2 restart

ПРИМІТКИ


4
це працювало для мене на Ubuntu, дякую! Дивно, як sudo apt-get install php5-mcryptнасправді розширення не встановлено повністю.
Арістідес

Ubuntu 13.10 - мені також довелося встановити mcrypt сам
Ondrej Galbavý

1
Мабуть, він уже встановив mcrypt ini в доступні моди, я просто не знав команди php5enmod. Використовуючи це, це працює як шарм. Дякую!
imkingdavid

Так що тільки на цьому у мене є перелік mcrypt, коли я переходжу на php -m, коли я переходжу, який php він пише / usr / local / bin / php. Я намагався встановити mcrypt з brew і, здавалося, спрацював. Але Laravel все ще каже, що Mcrypt PHP потрібне розширення.
Marais Rossouw

1
Як і @imkingdavid, я також не потребував символічного посилання. php5enmod було достатньо Ubuntu 14.04 LTS
Бретт

340

У вас встановлений MAMP ?

Використовуйте which phpв терміналі, щоб побачити, яку версію PHP ви використовуєте.

Якщо це не версія PHP від ​​MAMP, вам слід відредагувати або додати .bash_profileв домашній каталог користувача, тобто:cd ~

В .bash_profile, додайте наступний рядок:

export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH

Відредаговано: спочатку слід скористатися командою, cd /Applications/MAMP/bin/phpщоб перевірити, яку версію PHP з MAMP ви використовуєте, а потім замінити на версію PHP, подану вище.

Потім restartтермінал, щоб побачити, який PHP ви використовуєте зараз.

І це має працювати зараз.


18
Вам не потрібен MAMP, щоб отримати Mcrypt.
jackyalcine

48
звичайно, вам не потрібен MAMP, щоб отримати Mcrypt. ця відповідь відповідає лише людям, які на своєму комп’ютері встановили кілька версій PHP, скажімо, XAMPP або MAMP або інші.
JustinHo

Аналогічно для користувачів AMPPS: export PATH=/Applications/AMPPS/php-5.4/bin:$PATH... якщо припустити, що ви знімаєте 5.4.xx, там також є 5.3 та 5.5.
Джоел Меллон

6
Всі не використовують MAMP, у вас є відповідь для решти людей?
TuGordoBello

2
Щойно я подумав, я б зазначив, що cd ~дуже важливо, ви повинні відкрити те, .bash_profileщо існує там, ТАКОЖ важливо, що ви повинні закрити свій термінал і знову відкрити, щоб нові змінні bash були завантажені. Просто переконайтеся, що запустіть, який php для перевірки зміни зміни застосовано, раді кодування!
wired00

142

Для тих, хто використовує XAMPP 1.7.3 та Mac

  1. Перейти до терміналу
  2. Введіть which php
    • Якщо він говорить /usr/bin/php, тоді переходимо до 3.
  3. Введіть sudo nano ~/.bash_profile(або sudo vim ~/.bash_profileякщо ви знаєте, як ним користуватися)
  4. Потім вставте це export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
  5. Ctrl+Oпотім увійдіть для збереження, а потім Ctrl+Xдля виходу.
  6. Тип cd ~
  7. тип . .bash_profile
  8. термінал перезапуску.
  9. Введіть which php. Якщо ви зробили це правильно, він повинен бути таким же, як шлях у №4.

Причина помилки mcrypt полягає в тому, що ваш Mac використовує свій рідний php, вам потрібно змінити його на той, який має xampp.

PS Я рекомендую використовувати MAMP для Laravel 4 для користувачів Mac, ця проблема буде вирішена разом із помилкою інформації про файл php без потужності, а версія php xampp настільки застаріла.


12
Також хороша відповідь! Має бути це для MAMP:"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
Foxinni

3
для тих, хто не має ~ / .bash_profile, спробуйте перевірити ~ / .bashrc
Ironwind

6
запускає .bash_profile негайно, зазвичай вам потрібно перезапустити для запуску цих баш
Bryan P

Сталося щось погане, і тепер мій термінал навіть не розпізнає судо
Sunny R Gupta

Він працює і на лампах, просто змініть шлях наexport PATH="/opt/lampp/bin:$PATH"
JTC

87

Для користувачів, які не є MAMP або XAMPP на OSX (із встановленою домашньою мовою):

brew install homebrew/php/php56-mcrypt

Ура!


1
Я хвилювався, що це не буде працювати з рідним OSX PHP, але я просто встановив це, і мені не довелося возитися зі своїм PATH або чим-небудь іншим. Просто працює. Хороший.
Лорен

3
Було б чудово, щоб ця відповідь була додана до провідних відповідей на цю тему, щоб зробити її всебічнішим ресурсом. Дякую за швидку пораду, як згадувала Лорен, це справді вирішує проблему.
Брайан Рейнер

4
Це насправді $ brew install homebrew/php/php55-mcrypt, інакше отриманоError: No available formula with the name "php55-mcrypt"
Коннор Ліч

47

Використовуючи Ubuntu, просто

sudo php5enmod mcrypt

зробив трюк для мене. Вам не потрібно перезапускати Apache, оскільки вам потрібно використовувати PHP просто з CLI.


37

У Ubuntu (PHP-FPM, Nginx)

sudo apt-get install php5-mcrypt

Після установки php5-mcrypt

Ви повинні зробити симпосилання на ini-файли у доступних модах:

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

включити:

sudo php5enmod mcrypt

перезапустити php5-fpm:

sudo service php5-fpm restart

Більш детально


Я побіг sudo aptitude -y install php5-mcrypt, за ним sudo php5enmod mcryptі sudo service php5-fpm restart. (Я пропустив м'який крок зв’язування). Це спрацювало :)
депутат

26

Початок роботи Laravel над Apache

Версія PHP: PHP 5.5.9

Версія Ubuntu: 14.04

У мене був робочий проект laravel на windows. коли я скопіював його на сервер ubuntu, я почав отримувати помилку mcrypt. це після багатьох годин спроб та помилок

налагодження роботи ремісничого командування

(якщо у вас є помилка mcrypt під час використання інструменту командного рядка artisan)

Я робив багато спроб і помилок, тому кожен раз, коли я запускав команду php5enmod раніше, у мене з'являлися повідомлення про помилки. але при свіжій установці не було повідомлень про помилки. після цього кроку я почав працювати майстерне командування

sudo rm /etc/php5/mods-available/mcrypt.ini
sudo apt-get purge php5-mcrypt
sudo apt-get install mcrypt
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt

виправлення помилки браузера

(якщо у браузері виникає помилка mcrypt під час доступу до локальної сторінки покажчика laravel)

sudo nano /etc/php5/apache2/php.ini

додайте наступний рядок у розділ динамічно складених розширень php ini

extension=mcrypt.so

перезапустіть сервер apache, очистіть кеш laravel і все, що працює


Якщо ви працюєте над зображенням php docker , вам також потрібно запустити docker-php-ext-install mcrypt. Випробувано на зображення: php:5.6.31-apache. Без цього php -mне показує mcrypt.
Ева

19

Для встановлення php-fpm на Ubuntu 14.04 мені працювало наступне:

sudo apt-get install php5-mcrypt

Це створить mcrypt.iniфайл всередині/etc/php5/mods-available/

Тоді

sudo php5enmod mcrypt

створить посилання на: /etc/php5/fpm/conf.d/

Просто перезапустіть сервіси php-fpm sudo service php5-fpm restart


19

Для ubuntu спробуйте виконати наступні дії, якщо інші не працюють:

  1. cd ~
  2. sudo apt-get remove php5-mcrypt
  3. sudo apt-get install php5-mcrypt
  4. sudo php5enmod mcrypt
  5. sudo service apache2 restart

Сподіваюся, що це допоможе. Дякую !


19

Або скористайтеся:

sudo apt-get install php5-mcrypt

не впевнений, чи це буде працювати при стандартних установках PHP - я встановив php 5.5.7за допомогою пакета з:

sudo add-apt-repository ppa:ondrej/php5 
sudo apt-get update

16

Моя ОС є Yosemite.

Я вирішую цю проблему, знаходячи конфігураційні шляхи:

php --ini

Приклад виводу:

Configuration File (php.ini) Path: /usr/local/etc/php/5.5
Loaded Configuration File:         /usr/local/etc/php/5.5/php.ini
Scan for additional .ini files in: /usr/local/etc/php/5.5/conf.d
Additional .ini files parsed:      (none)

Наступні кроки:

  1. Перейменуйте або видаліть INP-файл php55
  2. Створіть симпосилання
  3. Перезавантажте сервер Apache

Команди:

mv /usr/local/etc/php/5.5/php.ini /usr/local/etc/php/5.5/php.ini.default
ln -s /etc/php.ini /usr/local/etc/php/5.5/php.ini
sudo apachectl restart

Потім ви можете перевірити свої PHP модулі за допомогою:

php -m

16

Просто для юмерів,

yum install php-mcrypt
service httpd restart
chown -R apache:apache apppath

Можливо, вам потрібно встановити remi repo


15

Це вирішило це для мене на локальному оточенні Linux Mint /ubuntu/350942/cannot-get-mcrypt-for-php5

Мені потрібно було зробити посилання на мій файл /etc/php5/conf.d/mcrypt.ini у наступних папках /etc/php5/apache2/conf.d/mcrypt.ini та /etc/php5/cli/conf.d /mcrypt.ini


14

Вам потрібно все в одному середовищі. Ви можете використовувати MAMP або XAMPP або будь-які інші інструменти. Після установки одного з цих інструментів вам потрібно буде відредагувати (створити) свій .bash_profile (якщо припустити, що ви використовуєте bash).

Або навіть просто і професійніше ви можете використовувати Laravel Homestead.

Ось посилання на офіційну документацію: http://laravel.com/docs/5.0/homestead

Також Джеффрі має безкоштовний підручник про це: https://laracasts.com/series/laravel-5-fundamentals/episodes/2

Я раджу вам піти з садиби, оскільки ви попередньо встановите всі наступні інструменти.

  • Ubuntu 14.04
  • PHP 5.6
  • HHVM
  • Nginx
  • MySQL
  • Постгрес
  • Вузол (з Bower, Grunt і Gulp)
  • Редіс
  • Спогад
  • Beanstalkd
  • Посланець Ларавеля
  • Тканина + розширення HipChat

10

Розгортається на @JetLaggy:

Після повторної спроби змінити .bash_profile з каталогом MAMP, я змінив дозволи файлу для каталогу MAMP php і зміг отримати "який php", щоб показати відповідний каталог. Проблема полягала в тому, що інші функції не працювали, наприклад, "php -v".

Тому я оновив MAMP. http://documentation.mamp.info/uk/mamp/installation/updating-mamp

Це зробило трюк для моєї конкретної установки. Мені довелося налаштувати свій PATH для відображення оновленої версії PHP, але як тільки я це зробив, все працювало!


9

В ОС X

Використання MAMP

Введіть команду which phpв термінал, щоб побачити, яку версію PHP ви використовуєте. Якщо це не версія PHP від ​​MAMP, змінну $ PATH, яку використовує Bash, потрібно буде оновити.

Спочатку слід скористатися командою "cd / Applications / MAMP / bin / php", щоб перевірити, яка версія PHP від ​​MAMP та взяти до відома версію (наприклад, php5.6.7).

Коли ви знаєте версію, вам слід відредагувати ~/.bash_profileфайл (тобто той, .bash_profileякий знаходиться у вашому домашньому каталозі) та додати рядок експорту:

    export PATH=/Applications/MAMP/bin/php/php5.6.7/bin:$PATH

Переконайтеся, що ви замінили php5.6.7 версією PHP, яку ви обрали в MAMP.

Після збереження файлу переконайтесь, що ви закрили свій термінал та відкрили його знову. Як тільки це буде зроблено, ви будете використовувати PHP, який постачається з MAMP.


Один із способів легко знайти, якою має бути лінія, яку потрібно помістити всередину, .bash_profile- це запустити наступну команду всередині свого терміналу:

    echo export PATH=`cat /Applications/MAMP/conf/apache/httpd.conf \
         | grep php | grep -i LoadModule | head -n1 \
         | sed -e 's/^[^\/]*\/\(.*\)\/mod.*/\/\1/'`/bin:\$PATH

Копіювання та вставлення цих трьох рядків у ваш термінал буде правильно виводити версію PHP, обрану всередині панелі управління MAMP.

Використання Homebrew / MacPorts

Переконайтеся, що вони pathмістять /usr/local/bin/(Homebrew) або /opt/local/bin(MacPorts), якщо ви використовуєте PHP, який постачається з одним із цих двох менеджерів пакетів.

Перевірка шляху PHP за допомогою MacPorts

Ви можете знайти точне місцезнаходження PHP за допомогою MacPorts за допомогою наступної команди:

port contents php70 | grep bin/php

Зауважте, що вам слід замінити php70встановлену версію PHP.

Перевірте шлях до PHP за допомогою Homebrew-php

Homebrew-php ( https://github.com/Homebrew/homebrew-php ) - це кран, що має різні різні версії PHP.

Ви можете знайти точне місцезнаходження PHP за допомогою Homebrew за допомогою наступної команди:

brew --prefix homebrew/php/php56

Зауважте, що вам слід замінити php56встановлену версію PHP.


6

в Ubuntu 14.04

sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt

Ubuntu 16.04

sudo apt-get install php-mcrypt
sudo phpenmod mcrypt

Ubuntu 18.04

sudo apt install php7.0-mcrypt
sudo phpenmod mcrypt

або

sudo apt install php7.2-mcrypt
sudo phpenmod mcrypt

5

Якщо ви використовуєте Z Shell, просто виконайте наступне:

  1. Відкритий термінал
  2. судо nano ~/.zshrc
  3. Вставте це; export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
  4. Зберегти
  5. Біжи source ~/.zshrc
  6. Виконати which php - ви повинні отримати шлях MAMP 5.6.10

5.6.10 - це версія PHP, яку ви встановили у своєму MAMP.


3

OSX з варінням

$ brew install mcrypt php70-mcrypt

У мене працює PHP 7.0.x, тому змініть "php70" на свою версію, якщо ви використовуєте іншу версію.
Як зазначено в інших відповідях, ви можете побачити свою PHP-версію $ php -v.


3

Для тих, хто все ще приходить сюди сьогодні:

Laravel більше не потребує mcryptрозширення . mcryptзастаріло, останнє оновлення до libmcrypt було в 2007 році. Laravel 4.2 теж застарілий і більше не підтримує. Найкращим рішенням (= безпечне) є оновлення до Laravel> 5.1 (до Laravel 5.2 немає LTS).

Макріпта було видалено з Laravel у червні 2015 року: https://github.com/laravel/framework/pull/9041


Я

0

sudo php встановити mcrypt

sudo php5enmod mcrypt


1
Хоча ваш коментар технічно може бути правдивим, ми прагнемо включити пояснення до ваших відповідей тут на StackOverflow. Крім того, здається, що ОП вже встановлено mcrypt, чи можете ви розширити питання, чому ви вважаєте, що це вирішить проблему ОП?
milo526

0

в ubuntu 14.04 на основі вашої версії php: 5.6,7.0,7.1,7.2,7.3

sudo apt-get install php {версія} -mcrypt

sudo apt-get install php7.1-mcrypt

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