Web

Для 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, указанную выше. Затем перезапустите терминал и посмотрите, какой PHP вы используете сейчас. Теперь все должно работать.

 

Ответ 3

Для тех, кто использует XAMPP 1.7.3 и Mac:

  1. Перейдите в Терминал.

  2. Введите php.

Если там написано /usr/bin/php, то перейдите к пункту 3.

  1. Введите sudo nano ~/.bash_profile (или sudo vim ~/.bash_profile, если вы знаете, как им пользоваться).

  2. Затем вставьте это export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH".

  3. Ctrl+O, затем enter для сохранения, затем Ctrl+X для выхода.

  4. Введите cd ~.

  5. Введите .bash_profile.

  6. Перезапустите терминал.

  7. Введите php. Если вы все сделали правильно, он должен быть таким же, как путь в #4.

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

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

 

Ответ 4

Обеспечение работы Laravel на Apache. Версия PHP : PHP 5.5.9. Версия Ubuntu: 14.04

У меня был рабочий проект laravel на windows. Когда я скопировал его на сервер 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, и все заработает

 

Ответ 5

В 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

Вы можете найти точное местоположение PHP при помощи Homebrew с помощью следующей команды:

brew --prefix homebrew/php/php56

 

Схожие статьи

Web

Транзакции в PHP + MySQL

Web

Как получить ID последней обновленной строки в MySQL

Web

Сохранение изображения из URL-адреса в PHP

Web

Что такое stdClass в PHP?

×