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

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

 Laravel requires the Mcrypt PHP extension. 

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

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

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

Solutions Collecting From Web of "Laravel требует расширения Mcrypt PHP"

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

  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 . .bash_profile
  8. перезапустить терминал.
  9. Введите, which php . Если вы сделали это правильно, это должно быть таким же, как путь в # 4.

Причина ошибки mcrypt заключается в том, что ваш Mac использует свой собственный php, вам нужно изменить его на тот, который имеет xampp.

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

Для пользователей без MAMP или XAMPP на OSX (с установленным доморощенным):

brew install homebrew/php/php56-mcrypt

Ура!

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

 sudo php5enmod mcrypt 

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

В 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 на окнах. когда я скопировал его на сервер 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 и все, что работает

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

 sudo apt-get install php5-mcrypt 

(не уверен, что это будет работать на стандартных установках PHP – я установил php 5.5.7 используя пакет из:

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

)

Для ubuntu попробуйте выполнить эти шаги, если другие не работают:

 cd ~ 

тогда

  sudo apt-get remove php5-mcrypt 

тогда

 sudo apt-get install php5-mcrypt 

тогда

 sudo php5enmod mcrypt 

в конце концов

 sudo service apache2 restart 

Надеюсь, что это поможет. Благодаря !

Для установок 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

Моя ОС – Йосемити.

Я разрешаю эту проблему, следуя командам:

 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

 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 

и перезапустите сервер Apache

 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

возможно, вам нужно установить реми-репо, пожалуйста, обратитесь к http://rpms.famillecollet.com/

Вам нужно все в одной среде. Вы можете использовать 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
  • Узел (с помощью Bower, Grunt и Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Посланник Ларавеля
  • Ткань + расширение HipChat

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

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

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

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

В 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, которую вы установили.

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

  1. Открытый терминал
  2. sudo 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.

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 (LTS перед Laravel 5.2 не существует).

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

в Ubuntu 14.04

 sudo apt-get install php5-mcrypt sudo php5enmod mcrypt 

Ubuntu 16.04

 sudo apt-get install php-mcrypt sudo phpenmod mcrypt