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

393

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

Laravel requires the Mcrypt PHP extension.

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

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

Изображение 19

  • 0
    Вы используете Laravel 3 или 4?
  • 0
    Просто добавил информацию в пост. Это Ларавел 4
Показать ещё 6 комментариев
Теги:
laravel-4
mcrypt

22 ответа

230
Лучший ответ

Расширения с поддержкой Интернета и расширения с поддержкой командной строки могут различаться. Запустите 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 самом деле не устанавливает расширение полностью.
  • 0
    Ubuntu 13.10 - мне также пришлось установить сам mcrypt
Показать ещё 7 комментариев
346

У вас установлен 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.
  • 47
    Конечно, вам не нужен MAMP, чтобы получить Макрипта. Этот ответ предназначен только для людей, у которых на компьютере установлено несколько версий PHP, например, XAMPP или MAMP или другие.
Показать ещё 11 комментариев
134

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

  • 12
    Также хороший ответ! Должно быть так для MAMP: "export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
  • 3
    для тех, у кого нет ~ / .bash_profile, попробуйте проверить ~ / .bashrc
Показать ещё 5 комментариев
80

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

brew install homebrew/php/php56-mcrypt

Ура!

  • 1
    Я волновался, что это не будет работать с родным OSX PHP, но я только установил это, и мне не пришлось возиться с моим PATH или чем-то еще. Просто работает. Хороший.
  • 3
    Было бы здорово добавить этот ответ к ведущим ответам в этой теме, чтобы сделать его более полным ресурсом. Спасибо за быстрый совет, как упоминала Лорен, это действительно решает проблему.
Показать ещё 2 комментария
45

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

sudo php5enmod mcrypt

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

36

В 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

Подробнее

  • 0
    Я запустил sudo aptitude -y install php5-mcrypt , а затем sudo php5enmod mcrypt и sudo service php5-fpm restart . (Я пропустил шаг мягкого связывания). Это сработало :)
24

Получение 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 и все, что работает

  • 0
    Если вы работаете над образом php docker , вам также нужно запустить docker-php-ext-install mcrypt . Протестировано на изображении: php:5.6.31-apache . Без этого php -m не показывает mcrypt .
18

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

18

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

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

17

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

sudo apt-get install php5-mcrypt

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

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

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

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

Может быть, вам нужно установить реми репо

15

Моя ОС - 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. Переименовать или удалить файл php55 ini
  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
14

Это решило это для меня на локальной среде 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

12

Вам нужно все в одной среде. Вы можете использовать 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
10

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

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

Итак, я обновил MAMP. http://documentation.mamp.info/en/mamp/installation/updating-mamp

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

8

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

4

в Ubuntu 14.04

sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt

Ubuntu 16.04

sudo apt-get install php-mcrypt
sudo phpenmod mcrypt
4

Если вы используете 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.

2

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

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
    Я исправил проблему, запустив усадьбу
2

OSX с brew

$ brew install mcrypt php70-mcrypt

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

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 
0

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

sudo php5enmod mcrypt

  • 1
    Хотя ваш комментарий технически может быть правдой, мы стремимся включить некоторые объяснения в ваши ответы здесь, на StackOverflow. Более того, кажется, что OP уже установил mcrypt могли бы вы mcrypt , почему вы считаете, что это решит проблему с OP?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню