找不到 mcrypt => 调用未定义的函数 Laravel\mcrypt_create_iv()
Posted
技术标签:
【中文标题】找不到 mcrypt => 调用未定义的函数 Laravel\\mcrypt_create_iv()【英文标题】:can't find mcrypt => Call to undefined function Laravel\mcrypt_create_iv()找不到 mcrypt => 调用未定义的函数 Laravel\mcrypt_create_iv() 【发布时间】:2012-09-10 21:25:21 【问题描述】:尝试设置 Laravel 并不断遇到此错误。我通过 brew 安装了 mcrypt,它位于 /usr/local/Cellar。有什么想法吗? .. 它也没有出现在终端命令 php -m 中,如果这很重要的话。我正在使用 Mac 原生 Web 服务器运行 Mountaion Lion。
【问题讨论】:
需要重新编译php 【参考方案1】:Ubuntu 或任何基于 Debian 的 Linux 用户可以使用 apt-get
安装所需的软件包:
sudo apt-get install php5-mcrypt
之后记得重启网络服务器:
sudo service apache2 restart
如果仍然无法正常工作,请尝试将配置文件链接到 Web 服务器的相应配置文件夹。感谢 dave1010 在 cmets 中的提示。
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
。
【讨论】:
做了 apt-get 部分,我的网络服务器配置已重新加载,但需要像 Sophy 提到的那样重新启动 出于某种原因,在 Ubuntu 上,PHP 没有选择 mcrypt.ini。这修复了它:sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/apache2/conf.d/ ; sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/apache2/conf.d/
@dave1010 是的,成功了,非常感谢!!但是为什么同一个命令两次呢?
@leemes 好地方。它应该进入 apache2
和 cli
目录(或您使用的任何 SAPI):sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/apache2/conf.d/ ; sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/cli/conf.d/
对我来说 mcrypt.ini 位于/etc/php5/mods-available/mcrypt.ini
。我正在使用 Ubuntu 14.04 LTS 和 PHP 5.5.9-1ubuntu4.3。【参考方案2】:
您还需要在您的 php.ini
文件中启用它,并可能重新启动 Apache。
在php.ini
中,您将找到;mcrypt.so
并从中删除;
。
或者,如果它不在那里,只需在某处添加mcrypt.so
。
从 PHP 7.0.0 开始,salt 选项也已被弃用。现在更倾向于简单地使用默认生成的盐。
【讨论】:
似乎不起作用..找到这行代码code
[mcrypt];有关 mcrypt 设置的更多信息,请参阅 php.net/mcrypt-module-open ;加载 mcrypt 算法的目录;默认值:编译到 libmcrypt 中(通常是 /usr/local/lib/libmcrypt) ;mcrypt.algorithms_dir= ;加载 mcrypt 模式的目录;默认值:编译到 libmcrypt 中(通常是 /usr/local/lib/libmcrypt) ;mcrypt.modes_dir= code
如果其他浏览者也有同样的问题,这最终帮助了我。谢谢你们的快速回复! => coolestguyplanettech.com/…
@coryjacik 这取决于你是如何编译 mcrypt 的,我可能应该指定。
@coryjacik 感谢您的链接,我也遵循了该指南。但即使在我的系统上已经安装了 autoconf,我也必须 sudo ln -s /Developer/usr/share/autoconf /usr/share/
才能让 /usr/share/phpize
正常工作。
新版本的 debian/ubuntu 更容易(并且需要)apt-get install php5-mcyrpt
;, php5enmod mcrypt
;, service php5-fpm restart
【参考方案3】:
试试sudo php5enmod mcrypt && sudo service apache2 restart
【讨论】:
很好,现在它正在工作(在@Sophy 程序之后)!【参考方案4】:当您真正需要 php56-mcrypt
php 模块时,您已经安装了 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
【讨论】:
PO 绝对应该使用这些解决方案来解决他的问题...brew
是在 Mac OS X 上安装软件包的方式。
这对我不起作用...Error: No available formula for php55
这是安装mcrypt
的正确方法,还记得在运行此命令brew search mcrypt
后,您想使用brew install php56-mcrypt
安装mcrypt【参考方案5】:
您没有安装 mcrypt PHP 扩展。
对于 Mac,我按照以下说明操作: mcrypt on Mac 10.7 or 10.8.
它们看起来很多,但事实并非如此,它很容易遵循它的工作原理!
【讨论】:
【参考方案6】:您可能已经安装了 mycrypt,但没有安装/启用 php_mcrypt 模块。
【讨论】:
【参考方案7】:请注意最近升级到 PHP 7 的人 - MCRYPT 库是deprecated。如果您升级到 PHP 7 并且现在看到此错误,这就是原因。您应该切换到替代库,this thread 中提到了一些替代方案。
【讨论】:
【参考方案8】:在你的 php 安装中进入 CLI 文件夹,在里面找到 php.ini 并启用 mcrypt。终端有时会使用另一个 php.ini,通常在 CLI 文件夹中。
【讨论】:
【参考方案9】:我用 Homebrew 安装了 php 和 mcrypt,但是在执行了几次 brew update
之后我仍然遇到了这个错误。我认为我的设置随着时间的推移变得有些乏味。
原来我的 php 是从 /private/etc/php.ini 配置的,不是 /usr/local/etc/php/5.4/ php.ini 正如 Homebrew 推荐的那样。 /usr/local/etc/php/5.4/ext-mcrypt.ini 甚至没有包含 Mcrypt,考虑到 php -i
为我生成了这个,这没有多大意义: p>
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"
并保存
使用sudo apachectl restart
重新启动 Apache
【讨论】:
这确实有意义,您在命令行 (cli) 使用的 PHP 可以使用与您的网络服务器使用的 PHP 不同的 php.ini,您应该创建一个 phpinfo 文件并检查网络服务器的内容正在使用。 @JimmyKnoot 谢谢,我不知道。【参考方案10】:这最终对我有用:
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
添加到该目录时出现错误。
【讨论】:
以上是关于找不到 mcrypt => 调用未定义的函数 Laravel\mcrypt_create_iv()的主要内容,如果未能解决你的问题,请参考以下文章
调用未定义的函数 mcrypt_decrypt() - 即使安装了 php5-mcrypt
php artisan:调用未定义函数 App\Http\Services\mcrypt_get_block_size()
我想使用php 7.2使mcrypt在xampp窗口上工作错误:调用未定义的函数mcrypt_module_open()