Не может найти mcrypt => Вызов функции undefined Laravel\mcrypt_create_iv()

Попытка настроить Laravel и продолжать получать эту ошибку. Я установил mcrypt через brew и расположен в /usr/local/Cellar. Есть предположения?.. Он не появляется в терминальной команде php -m, если это имеет значение. Я запускаю Mountaion Lion с собственным веб-сервером macs.

Ответ 1

Вам также нужно включить его в свой файл php.ini и, возможно, перезапустить Apache.

В php.ini вы найдете ;mcrypt.so и удалите из него ;.

Или, если он не там, просто добавьте mcrypt.so где-нибудь.

Ответ 2

Ubuntu или любые пользователи Linux на базе Debian могут установить требуемый пакет с помощью apt-get:

sudo apt-get install php5-mcrypt

Не забудьте перезапустить веб-сервер:

sudo service apache2 restart

Если он все еще не работает, попробуйте связать файл конфигурации с соответствующей конфигурационной папкой для веб-сервера. Спасибо dave1010 за этот намек в комментариях.

sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/apache2/conf.d/   # for Apache
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/cli/conf.d/       # for CLI

И снова перезапустите веб-сервер:

sudo service apache2 restart

Возможно, если вы еще не работаете, вам нужна строка, показанная @RahulPrasad, с php5enmod mcrypt.

Ответ 3

Попробуйте sudo php5enmod mcrypt && sudo service apache2 restart

Ответ 4

Вы установили mcrypt, когда вам действительно нужен модуль php56-mcrypt php.

В своем вопросе вы указали, что видите mcrypt, установленный в /usr/local/Cellar, и используете OSX. Таким образом, самый простой способ установить PHP-модуль mcrypt на OSX с помощью Homebrew:

// assuming you have php56
brew install php56-mcrypt

Если homebrew не может найти правильный пакет, вам может понадобиться коснуться репозиториев PHP, найденных в GitHub:

brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php

Теперь, когда вы выдаете команду brew search mcrypt, вы должны увидеть что-то вроде:

libtomcrypt   mcrypt   php53-mcrypt   php54-mcrypt   php55-mcrypt   php56-mcrypt

Несколько других плакатов упомянули о необходимости редактировать ваш файл php.ini. Это будет лишним, так как доморощенный позаботится об активации модуля для вас. Он помещает файл конфигурации в /usr/local/etc/php/5.6/conf.d/ext-mcrypt.ini

Ответ 5

У вас не установлено расширение PHP mcrypt.

Для Mac я выполнил следующие инструкции: mcrypt на Mac 10.7 или 10.8.

Они выглядят много, но это не так, очень легко следовать в нем!

Ответ 6

Возможно, вы установили mycrypt, но не имеете установленного/включенного модуля php_mcrypt.

Ответ 7

Перейдите в папку CLI в вашей установке php и найдите там php.ini и включите mcrypt. Терминал иногда использует другой php.ini, который обычно находится в папке CLI.

Ответ 8

Я установил php и mcrypt с помощью Homebrew, но я все еще испытывал эту ошибку, несколько раз выполняя brew update. Я думаю, что моя настройка только немного согнулась с течением времени.

Оказывается, мой php настраивался из /private/etc/php.ini, не/usr/local/etc/php/5.4/php.ini, как рекомендует Homebrew. Mcrypt даже не включен в /usr/local/etc/php/ 5.4/ext-mcrypt.ini, который не имеет большого смысла, учитывая, что php -i производит это для меня:

Configuration File (php.ini) Path => /usr/local/etc/php/5.4
Loaded Configuration File => /usr/local/etc/php/5.4/php.ini
Scan this dir for additional .ini files => /usr/local/etc/php/5.4/conf.d
Additional .ini files parsed => /usr/local/etc/php/5.4/conf.d/ext-mcrypt.ini

Мое решение:

  • Изменить /private/etc/php.ini как суперпользователя
  • Добавить extension="/usr/local/Cellar/php54-mcrypt/5.4.28/mcrypt.so" и сохранить
  • Перезапустите Apache с помощью sudo apachectl restart

Ответ 9

Просто заметка для людей, которые недавно обновились до PHP 7. Библиотека MCRYPT была deprecated. Если вы перешли на PHP 7 и теперь видите эту ошибку, вот почему. Вы должны переключиться на альтернативную библиотеку, некоторые альтернативы упомянуты в этой теме.