Попытка настроить Laravel и продолжать получать эту ошибку. Я установил mcrypt через brew и расположен в /usr/local/Cellar. Есть предположения?.. Он не появляется в терминальной команде php -m, если это имеет значение. Я запускаю Mountaion Lion с собственным веб-сервером macs.
Не может найти mcrypt => Вызов функции undefined Laravel\mcrypt_create_iv()
Ответ 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 и теперь видите эту ошибку, вот почему. Вы должны переключиться на альтернативную библиотеку, некоторые альтернативы упомянуты в этой теме.