Для Laravel требуется расширение Mcrypt PHP
Я пытаюсь использовать функцию migrate
в Laravel 4
на OSX
. Однако я получаю следующую ошибку:
Laravel requires the Mcrypt PHP extension.
Насколько я понимаю, он уже включен (см. Изображение ниже).
Что не так и как я могу это исправить?
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
ПРИМЕЧАНИЯ
- PHP 7.1 устарел mcrypt, а 7.2 полностью удалил расширение mcrypt
- Laravel 5.1 и более поздние версии устранили необходимость в mcrypt
У вас установлен 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 вы используете сейчас.
И это должно работать сейчас.
Для тех, кто использует XAMPP 1.7.3 и Mac
- Перейдите к терминалу
- Введите
which php
- Если там написано
/usr/bin/php
, то переходите к 3.
- Если там написано
- Введите
sudo nano ~/.bash_profile
(илиsudo vim ~/.bash_profile
, если вы знаете, как его использовать) - Затем вставьте это
export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
- Ctrl+O затем введите для сохранения, затем Ctrl+X для выхода.
- Тип
cd ~
- тип
. .bash_profile
- перезагрузите терминал.
- Введите
which php
. Если вы все сделали правильно, это должно быть такой же, как путь в #4.
Причина ошибки mcrypt в том, что ваш Mac использует свой собственный php, вам нужно изменить его на тот, который есть у xampp.
P.S. Я бы рекомендовал использовать MAMP для Laravel 4 для пользователей Mac, эта проблема будет решена вместе с ошибкой php file info без проблем, а версия xampp для php настолько устарела.
Для пользователей, не являющихся пользователями MAMP или XAMPP в OSX (с установленным homebrew):
brew install homebrew/php/php56-mcrypt
Ура!
Используя Ubuntu, просто
sudo php5enmod mcrypt
Сделал это за меня. Вам не нужно перезапускать Apache, так как вам нужно использовать PHP только из командной строки.
В 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
Заставить 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-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
Для ubuntu попробуйте выполнить следующие действия, если другие не работают:
cd ~
sudo apt-get remove php5-mcrypt
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
sudo service apache2 restart
Надеюсь, это поможет. Спасибо!
Или используйте:
sudo apt-get install php5-mcrypt
Не уверен, что это будет работать при стандартных установках PHP - я установил php 5.5.7
с помощью пакета из:
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
Моя операционная система 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)
Следующие шаги:
- Переименовать или удалить ini-файл php55
- Создать символическую ссылку
- Перезапустить сервер 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
Это решило проблему для меня в моей локальной среде 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
Только для любителей,
yum install php-mcrypt
service httpd restart
chown -R apache:apache apppath
Возможно, вам нужно установить репозиторий remi
Вам нужна среда "все в одном". Вы можете использовать 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
- Постгрес
- Узел (С поклоном, Ворчанием и глотком)
- Редис
- Кэширование памяти
- Бобовый стебель
- Посланник Ларавеля
- Ткань + хипчат Расширение
Расширение @Jetlaggy:
После многократных попыток изменить .bash_profile с помощью каталога MAMP я изменил права доступа к файлам для каталога php MAMP и смог получить "какой php", чтобы показать соответствующий каталог. Проблема заключалась в том, что другие функции не работали, такие как "php-v".
Поэтому я обновил MAMP. http://documentation.mamp.info/en/mamp/installation/updating-mamp
Это сработало для моей конкретной установки. Мне пришлось скорректировать свой ПУТЬ чтобы отразить обновленную версию PHP, но как только я это сделал, все заработало!
В 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, которую вы установили.
Если вы используете оболочку Z, просто выполните следующие действия:
- Открыть терминал
- судо
nano ~/.zshrc
- Вставьте это;
export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
- Сохранить
-
Выполнить
source ~/.zshrc
-
Выполнить
which php
- вы должны получить путь MAMP 5.6.10
5.6.10 является ли версия PHP, которую вы установили в своем MAMP.
В Ubuntu 14.04
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
Ubuntu 16.04
sudo apt-get install php-mcrypt
sudo phpenmod mcrypt
OSX с варевом
$ brew install mcrypt php70-mcrypt
Я использую PHP 7.0.x, поэтому измените "php70" на свою версию, если вы используете другую версию.
Как указано в других ответах, вы можете увидеть свою версию php с $ php -v
.
Для тех, кто все еще приходит сюда сегодня:
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
В 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
Sudo php установить mcrypt
Судо php5enmod mcrypt