Laravel требует расширения Mcrypt PHP
Я пытаюсь использовать функцию migrate
в Laravel 4
на OSX
. Однако я получаю следующую ошибку:
Laravel requires the Mcrypt PHP extension.
Насколько я понимаю, он уже включен (см. Изображение ниже).
Что не так, и как я могу это исправить?
![enter image description here]()
Ответы
Ответ 1
Расширения с поддержкой Интернета и расширения с поддержкой командной строки могут различаться. Запустите 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
ЗАМЕТКИ
Ответ 2
У вас установлен 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 вы используете сейчас.
И он должен работать сейчас.
Ответ 3
Для тех, кто использует 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 без пота, а версия PHP xppp настолько устарела.
Ответ 4
Для пользователей без MAMP или XAMPP на OSX (с установленным доморощенным):
brew install homebrew/php/php56-mcrypt
Ура!
Ответ 5
Используя Ubuntu, просто
sudo php5enmod mcrypt
сделал трюк для меня. Вам не нужно перезапускать Apache, поскольку вам нужно использовать PHP только из CLI.
Ответ 6
В 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
Подробнее
Ответ 7
Получение Laravel для работы с Apache
PHP-версия: PHP 5.5.9
Версия Ubuntu: 14.04
У меня был рабочий проект laravel на окнах. когда я скопировал его на сервер ubuntu, я начал получать ошибку mcrypt. это после многих часов проб и ошибок
получение команды artisan
(если вы используете ошибку mcrypt при использовании инструмента командной строки artisan)
Я сделал много проб и ошибок, поэтому каждый раз, когда я запускаю команду php5enmod раньше, у меня были сообщения об ошибках. но при новой установке сообщений об ошибках не было. после этого шага я получил команду artisan, работающую
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 и все, что работает
Ответ 8
Для Ubuntu попробуйте эти шаги, если другие не работают:
-
cd ~
-
sudo apt-get remove php5-mcrypt
-
sudo apt-get install php5-mcrypt
-
sudo php5enmod mcrypt
-
sudo service apache2 restart
Надеюсь, что это поможет. Спасибо !
Ответ 9
Для установки 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
Ответ 10
Или используйте:
sudo apt-get install php5-mcrypt
не уверен, будет ли это работать на стандартных установках PHP - я установил php 5.5.7
используя пакет из:
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
Ответ 11
Моя ОС - 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)
Следующие шаги:
- Переименовать или удалить файл php55 ini
- Создать символическую ссылку
- Перезапустите сервер 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
Ответ 12
Просто для юмеров,
yum install php-mcrypt
service httpd restart
chown -R apache:apache apppath
Может быть, вам нужно установить реми репо
Ответ 13
Это решило это для меня на локальной среде Linux Mint https://askubuntu.com/questions/350942/cannot-get-mcrypt-for-php5
Мне нужно было сделать символическую ссылку на файл /etc/php 5/conf.d/mcrypt.ini в следующих папках /etc/php 5/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
- Postgres
- Node (С Bower, Grunt и Gulp)
- Redis
- Memcached
- Beanstalkd
- Представитель Laravel
- Ткань + расширение HipChat
Ответ 15
Расширение на @JetLaggy:
После повторного и повторного изменения файла .bash_profile с каталогом MAMP я изменил права доступа к файлу MAMP php и смог получить "какой php", чтобы показать соответствующий каталог. Проблема заключалась в том, что другие функции не работали, например, "php -v".
Итак, я обновил MAMP. http://documentation.mamp.info/en/mamp/installation/updating-mamp
Это сделало трюк для моей конкретной установки. Мне пришлось настроить PATH, чтобы отразить обновленную версию PHP, но как только я это сделал, все сработало!
Ответ 16
В OS 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, которую вы установили.
Ответ 17
Если вы используете Z Shell, выполните следующие действия:
- Открыть терминал
- sudo
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.
Ответ 18
в Ubuntu 14.04
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
Ubuntu 16.04
sudo apt-get install php-mcrypt
sudo phpenmod mcrypt
Ответ 19
OSX с brew
$ brew install mcrypt php70-mcrypt
Я запускаю PHP 7.0.x, поэтому измените "php70" на свою версию, если вы используете другую версию.
Как указано в других ответах, вы можете увидеть свою версию php с помощью $ php -v
.
Ответ 20
Для тех, кто все еще приезжает сюда сегодня:
Laravel больше не нуждается в расширении mcrypt
. mcrypt
устарел, последнее обновление libmcrypt было в 2007 году. Laravel 4.2 тоже устарел и больше не поддерживает. Лучшее (= безопасное) решение - это обновить до Laravel> 5.1 (до Laravel 5.2 нет LTS).
Макрипт был удален из Laravel в июне 2015 года: https://github.com/laravel/framework/pull/9041.
Ответ 21
sudo php установить mcrypt
sudo php5enmod mcrypt
Ответ 22
в 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