it-roy-ru.com

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

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

Laravel requires the Mcrypt PHP extension.

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

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

enter image description here

377
Patrick Reck

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

ЗАМЕТКИ 

247
Jason Lewis

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

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

331
JustinHo

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

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

141
Bryan P

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

brew install homebrew/php/php56-mcrypt

Ура!

84
oozzal

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

Sudo php5enmod mcrypt

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

45
mppfiles

В 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

Более детально

37
Nanhe Kumar

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

24
Sojan V Jose

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

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

18
Sagiruddin Mondal

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

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

Sudo apt-get install php5-mcrypt

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

Sudo add-apt-repository ppa:ondrej/php5 
Sudo apt-get update
17
JoeTidee

Моя ОС 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
15
d.danailov

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

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

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

15
Sean

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

14
Theo Kouzelis

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

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

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

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

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

  • Убунту 14.04
  • PHP 5.6
  • HHVM
  • Nginx
  • MySQL
  • Postgres
  • Узел (с Бауэром, Грантом и Глотком)
  • Redis
  • Memcached
  • Beanstalkd
  • Laravel Envoy
  • Расширение Fabric + HipChat
12
mburakergenc

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

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

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

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

10
abaumer

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

8
Tim Groeneveld

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

4
Unwired

в 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
Gowthaman

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

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

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

2
rap-2-h

OSX с заваркой

$ brew install mcrypt php70-mcrypt

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

2
kris

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

Sudo php5enmod mcrypt

0
Anubhav Tiwari

в Ubuntu 14.04 на основе вашей версии PHP: 5.6,7.0,7.1,7.2,7.3

Sudo apt-get install php {version} -mcrypt

Sudo apt-get install php7.1-mcrypt

Sudo phpenmod mcrypt 
0
Jignesh Joisar