无法找到mcrypt =>调用未定义的函数Laravel \ mcrypt_create_iv()

时间:2012-09-18 15:18:03

标签: php osx-mountain-lion mcrypt laravel

尝试设置Laravel并继续遇到此错误。我通过brew安装了mcrypt,它位于/ usr / local / Cellar。有什么想法吗? ..它没有出现在终端命令php -m中,如果这很重要。我正在使用macs本地Web服务器运行Mountaion Lion。

10 个答案:

答案 0 :(得分:66)

Ubuntu或任何基于Debian的Linux用户都可以使用apt-get安装所需的软件包:

sudo apt-get install php5-mcrypt

请记住以后重新启动Web服务器:

sudo service apache2 restart

如果仍然无效,请尝试将配置文件链接到Web服务器的相应配置文件夹。感谢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

再次,重新启动Web服务器:

sudo service apache2 restart

也许,如果还没有工作,你还需要@RahulPrasad显示的行php5enmod mcrypt

答案 1 :(得分:38)

您还需要在php.ini文件中启用它,并可能重新启动Apache。

php.ini中,您会找到;mcrypt.so并从中移除;

或者,如果它不在那里,只需在某处添加mcrypt.so

自PHP 7.0.0起,salt选项也已弃用。现在最好只使用默认生成的盐。

答案 2 :(得分:28)

尝试sudo php5enmod mcrypt && sudo service apache2 restart

答案 3 :(得分:20)

当您真正想要mcrypt php模块时,您已经安装了php56-mcrypt

您在问题中声明,您可以在mcrypt中看到/usr/local/Cellar,并且您正在使用OSX。因此,使用Homebrew在OSX上安装mcrypt PHP模块的最简单方法是:

// assuming you have php56
brew install php56-mcrypt

如果自制软件找不到正确的软件包,您可能需要tap the PHP repositories found on 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

答案 4 :(得分:2)

您没有安装mcrypt PHP扩展程序。

对于Mac,我按照以下说明操作: mcrypt on Mac 10.7 or 10.8

它们看起来很多,但事实并非如此,它很容易跟进它!

答案 5 :(得分:1)

您可能已安装mycrypt但未安装/启用php_mcrypt模块。

答案 6 :(得分:1)

对于最近升级到PHP 7的人来说只是一个注释 - MCRYPT库已经deprecated。如果您升级到PHP 7并且现在看到此错误,那就是原因。您应该切换到另一个库,this thread中提到了一些替代方案。

答案 7 :(得分:0)

转到php安装中的CLI文件夹,在那里找到php.ini并启用mcrypt。终端有时使用另一个php.ini,它通常位于CLI文件夹中。

答案 8 :(得分:0)

我用Homebrew安装了php和mcrypt,但是在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

我的解决方案:

  1. 以超级用户身份修改/private/etc/php.ini
  2. 添加extension="/usr/local/Cellar/php54-mcrypt/5.4.28/mcrypt.so"并保存
  3. 使用sudo apachectl restart
  4. 重启Apache

答案 9 :(得分:0)

这最终对我有用:

brew reinstall --with-homebrew-curl --with-httpd php56
brew reinstall --build-from-source php56-mcrypt

我还必须执行sudo chmod 777 /usr/local/etc/php/5.6/conf.d,因为当第二个brew reinstall尝试将ext-mcrypt.ini添加到该目录时出现错误。