Для Laravel требуется расширение Mcrypt PHP


Я пытаюсь использовать функцию migrate в Laravel 4 на OSX. Однако я получаю следующую ошибку:

Laravel requires the Mcrypt PHP extension.

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

Что не так и как я могу это исправить?

enter image description here

Author: Patrick Reck, 2013-05-30

22 answers

Расширения с поддержкой Интернета и расширения с поддержкой командной строки могут отличаться. Запустите 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

ПРИМЕЧАНИЯ

 226
Author: Jason Lewis, 2017-12-01 16:38:52

У вас установлен 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 вы используете сейчас.

И это должно работать сейчас.

 327
Author: JustinHo, 2016-09-07 08:10:22

Для тех, кто использует 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.

P.S. Я бы рекомендовал использовать MAMP для Laravel 4 для пользователей Mac, эта проблема будет решена вместе с ошибкой php file info без проблем, а версия xampp для php настолько устарела.

 137
Author: Bryan P, 2015-02-25 12:07:01

Для пользователей, не являющихся пользователями MAMP или XAMPP в OSX (с установленным homebrew):

brew install homebrew/php/php56-mcrypt

Ура!

 82
Author: oozzal, 2016-06-04 07:46:30

Используя Ubuntu, просто

sudo php5enmod mcrypt

Сделал это за меня. Вам не нужно перезапускать Apache, так как вам нужно использовать PHP только из командной строки.

 43
Author: mppfiles, 2014-06-15 19:50:11

В 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

Более подробно

 35
Author: Nanhe Kumar, 2014-07-01 09:45:04

Заставить 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 и все работает

 22
Author: Sojan V Jose, 2014-10-02 20:12: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

 16
Author: Prateek Choudhary, 2014-12-19 07:00:53

Для 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

Надеюсь, это поможет. Спасибо!

 16
Author: Sagiruddin Mondal, 2018-08-17 17:21:13

Или используйте:

sudo apt-get install php5-mcrypt

Не уверен, что это будет работать при стандартных установках PHP - я установил php 5.5.7 с помощью пакета из:

sudo add-apt-repository ppa:ondrej/php5 
sudo apt-get update
 16
Author: JoeTidee, 2018-08-17 17:21:56

Моя операционная система 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. Переименовать или удалить ini-файл 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
 13
Author: d.danailov, 2018-08-17 17:27:38

Это решило проблему для меня в моей локальной среде Linux Mint https://askubuntu.com/questions/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

 12
Author: Theo Kouzelis, 2017-04-13 12:22:45

Только для любителей,

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

Возможно, вам нужно установить репозиторий remi

 12
Author: Sean, 2018-08-17 17:28:38

Вам нужна среда "все в одном". Вы можете использовать MAMP или XAMPP или любые другие инструменты. После установки одного из этих инструментов вам нужно будет отредактировать (создать) свой .bash_profile (при условии, что вы используете bash).

Или даже просто и более профессионально вы можете использовать Laravel Homestead.

Вот ссылка на официальную документацию: http://laravel.com/docs/5.0/homestead

Также у Джеффри есть бесплатный учебник о оно: https://laracasts.com/series/laravel-5-fundamentals/episodes/2

Я советую вам использовать homestead, потому что вы предварительно установите все следующие инструменты.

  • Ubuntu 14.04
  • PHP 5.6
  • HHVM
  • Nginx
  • MySQL
  • Постгрес
  • Узел (С поклоном, Ворчанием и глотком)
  • Редис
  • Кэширование памяти
  • Бобовый стебель
  • Посланник Ларавеля
  • Ткань + хипчат Расширение
 11
Author: mburakergenc, 2015-03-02 19:31:15

Расширение @Jetlaggy:

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

Поэтому я обновил MAMP. http://documentation.mamp.info/en/mamp/installation/updating-mamp

Это сработало для моей конкретной установки. Мне пришлось скорректировать свой ПУТЬ чтобы отразить обновленную версию PHP, но как только я это сделал, все заработало!

 9
Author: abaumer, 2013-12-10 23:24:24

В OS X

Использование MAMP

Введите команду which php в терминале, чтобы узнать, какую версию PHP вы используете. Если это не версия PHP от MAMP, переменную $PATH, используемую Bash, необходимо будет обновить.

Во-первых, вы должны использовать команду "cd/Приложения/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/ (Доморощенный) или /opt/local/bin (MacPorts), если вы используете PHP, который поставляется с одним из этих двух менеджеров пакетов.

Проверка пути PHP с помощью MacPorts

Вы можете найти точное местоположение PHP с помощью MacPorts с следующая команда:

port contents php70 | grep bin/php

Обратите внимание, что вы должны заменить php70 версией PHP, которую вы установили.

Проверьте путь PHP с помощью Homebrew-php

Доморощенный-php (https://github.com/Homebrew/homebrew-php ) - это кран, который имеет различные версии PHP.

Вы можете найти точное местоположение PHP с помощью Homebrew с помощью следующей команды:

brew --prefix homebrew/php/php56

Обратите внимание, что вы должны заменить php56 версией PHP, которую вы установили.

 7
Author: Tim Groeneveld, 2016-01-14 01:28:25

Если вы используете оболочку Z, просто выполните следующие действия:

  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
Author: Unwired, 2016-01-20 03:43:24

В Ubuntu 14.04

sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt

Ubuntu 16.04

sudo apt-get install php-mcrypt
sudo phpenmod mcrypt
 3
Author: Gowthaman, 2017-05-05 16:42:55

OSX с варевом

$ brew install mcrypt php70-mcrypt

Я использую PHP 7.0.x, поэтому измените "php70" на свою версию, если вы используете другую версию.
Как указано в других ответах, вы можете увидеть свою версию php с $ php -v.

 2
Author: kris, 2017-01-28 05:41:55

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

Laravel больше не нуждается в расширении mcrypt. mcrypt устарел, последнее обновление libmcrypt было в 2007 году. Laravel 4.2 тоже устарел и больше не поддерживается. Лучшим (=безопасным) решением является обновление до Laravel >5.1 (до Laravel 5.2 LTS отсутствует).

Mcrypt был удален из Laravel в июне 2015 года: https://github.com/laravel/framework/pull/9041

 1
Author: rap-2-h, 2018-03-16 09:16:42

В ubuntu 14.04 на основе вашей версии php : 5.6,7.0,7.1,7.2,7.3

Sudo apt-получить установку php{версия}-mcrypt

sudo apt-get install php7.1-mcrypt

sudo phpenmod mcrypt 
 0
Author: Jignesh Joisar, 2018-10-04 12:02:05

Sudo php установить mcrypt

Судо php5enmod mcrypt

 -1
Author: Anubhav Tiwari, 2018-09-18 12:15:05