Laravel 需要 Mcrypt PHP 扩展

Posted

技术标签:

【中文标题】Laravel 需要 Mcrypt PHP 扩展【英文标题】:Laravel requires the Mcrypt PHP extension 【发布时间】:2013-05-25 16:31:13 【问题描述】:

我正在尝试在 OSX 上的 Laravel 4 中使用 migrate 函数。但是,我收到以下错误:

Laravel requires the Mcrypt php extension.

据我了解,它已经启用(见下图)。

出了什么问题,我该如何解决?

【问题讨论】:

你使用 Laravel 3 还是 4? 刚刚将信息添加到帖子中。这是 Laravel 4 也许这篇文章会对你有所帮助:***.com/questions/14476181/… 您使用的是内置 PHP,还是安装了其他版本?如果是这样,您是如何安装的? 我使用自制软件找到了这个简单的解决方案:jorble.com/2013/04/install-php-mcrypt-in-macosx 【参考方案1】:

启用 Web 的扩展程序和启用命令行的扩展程序可能不同。在终端中运行 php -m 并检查是否列出了 mcrypt。如果不是,则通过从终端运行 php --ini 检查命令行从何处加载 php.ini 文件。

在这个php.ini 文件中,您可以启用扩展。

OSX

我听说有人在 OSX 上遇到问题,因为终端指向 OSX 附带的本机 PHP。相反,您应该更新您的 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

注意事项

PHP 7.1 已弃用 mcrypt,而 7.2 有 removed the mcrypt extension entirely Laravel 5.1 及更高版本removed the need for mcrypt

【讨论】:

这在 Ubuntu 上对我有用,谢谢!奇怪的是 sudo apt-get install php5-mcrypt 实际上并没有完全安装扩展。 Ubuntu 13.10 - 我还必须自己安装 mcrypt 显然它已经将 mcrypt ini 安装到 mods-available 中,我只是不知道 php5enmod 命令。使用它使它像魅力一样工作。谢谢! 因此,就在这一点上,当我使用 php -m 时,我列出了 mcrypt,当我使用哪个 php 时,它显示 /usr/local/bin/php。我试过用 brew 安装 mcrypt,似乎成功了。但 Laravel 仍然说需要 Mcrypt PHP 扩展。 像@imkingdavid 我也不需要符号链接。 php5enmod 就足够了。 Ubuntu 14.04 LTS【参考方案2】:

您是否安装了MAMP

在终端中使用which php 来查看您使用的PHP 版本。

如果不是MAMP的PHP版本,你应该在用户的主目录下编辑或添加.bash_profile,即:cd ~

.bash_profile 中,添加以下行:

export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH

已编辑:首先您应该使用命令cd /Applications/MAMP/bin/php 检查您正在使用的 MAMP 中的哪个 PHP 版本,然后替换为上面的 PHP 版本。

然后restart终端查看你现在使用的是哪个PHP。

它现在应该可以工作了。

【讨论】:

你不需要 MAMP 来获得 Mcrypt。 当然你不需要 MAMP 来获得 Mcrypt。此答案仅适用于在其计算机上安装了多个 PHP 版本(例如 XAMPP 或 MAMP 或其他版本)的人。 同样,对于 AMPPS 用户:export PATH=/Applications/AMPPS/php-5.4/bin:$PATH ...假设您正在为 5.4.xx 拍摄,那么其中还有 5.3 和 5.5。 大家不用MAMP,你有其他人的答案吗? 只是想我会指出,cd ~ 非常重要,您必须打开那里存在的.bash_profile,另外重要的是您必须关闭终端并重新打开,以便新的 bash 变量被加载。只需确保运行哪个 php 来验证您的更改是否已应用,祝您编码愉快!【参考方案3】:

致使用 XAMPP 1.7.3 和 Mac 的用户

    前往航站楼 输入which php 如果显示为/usr/bin/php,则继续执行 3。 输入sudo nano ~/.bash_profile(如果您知道如何使用,请输入sudo vim ~/.bash_profile) 然后粘贴这个export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH" Ctrl+O然后回车保存,然后Ctrl+X退出。 输入cd ~ 输入. .bash_profile 重启终端。 输入which php。如果你做对了,它应该和#4中的路径一样。

mcrypt 错误的原因是因为你的 Mac 使用了它的原生 php,你需要把它改成 xampp 的那个。

附: 我建议为 Mac 用户使用 Laravel 4 的 MAMP,这个问题将与 php 文件信息错误一起得到解决,而且 xampp 的 php 版本已经过时了。

【讨论】:

也是一个很好的答案! MAMP 应该是这个:"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH" 对于那些没有~/.bash_profile的人,请尝试检查~/.bashrc 立即运行 .bash_profile,通常你需要重启这些 bash 才能运行 发生了一些不好的事情,现在我的终端甚至无法识别 sudo 它也适用于lampp,只需将路径更改为export PATH="/opt/lampp/bin:$PATH"【参考方案4】:

对于 OSX 上的非 MAMP 或 XAMPP 用户(安装自制软件):

brew install homebrew/php/php56-mcrypt

干杯!

【讨论】:

我担心这不适用于本机 OSX PHP,但我只是安装了它,我不必弄乱我的 PATH 或任何东西。只是工作。不错。 很高兴能将此答案附加到该线程的主要答案中,使其成为更全面的资源。感谢您的快速建议,正如 Lauren 所说,这确实解决了问题。 这个其实是$ brew install homebrew/php/php55-mcrypt,否则得到Error: No available formula with the name "php55-mcrypt" 【参考方案5】:

在@JetLaggy 上扩展:

在一次又一次地尝试使用 MAMP 目录修改 .bash_profile 之后,我更改了 MAMP php 目录的文件权限,并且能够获得“which php”来显示正确的目录。问题是其他功能不起作用,例如'php -v'。

所以我更新了 MAMP。 http://documentation.mamp.info/en/mamp/installation/updating-mamp

这对我的特定设置起到了作用。我不得不调整我的 PATH 以反映 PHP 的更新版本,但一旦我这样做了,一切正常!

【讨论】:

【参考方案6】:

或者,使用:

sudo apt-get install php5-mcrypt

不确定这是否适用于标准 PHP 安装 - 我使用以下软件包安装了 php 5.5.7

sudo add-apt-repository ppa:ondrej/php5 
sudo apt-get update

【讨论】:

【参考方案7】:

这在我的 Linux Mint 本地环境中为我解决了问题https://askubuntu.com/questions/350942/cannot-get-mcrypt-for-php5

我需要在以下文件夹 /etc/php5/apache2/conf.d/mcrypt.ini 和 /etc/php5/cli/ 中创建指向我的 /etc/php5/conf.d/mcrypt.ini 文件的符号链接conf.d/mcrypt.ini

【讨论】:

【参考方案8】:

使用 Ubuntu,只需

sudo php5enmod mcrypt

为我做了诀窍。您无需重新启动 Apache,因为您只需从 CLI 中使用 PHP。

【讨论】:

【参考方案9】:

在 Ubuntu 中(PHP-FPM、nginx

sudo apt-get install php5-mcrypt

安装php5-mcrypt后

您必须在 mods-available 中创建指向 ini 文件的符号链接:

sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini

启用:

sudo php5enmod mcrypt

重启php5-fpm:

sudo service php5-fpm restart

More detail

【讨论】:

我跑了sudo aptitude -y install php5-mcrypt,然后是sudo php5enmod mcryptsudo service php5-fpm restart。 (我跳过了软链接步骤)。它工作:)【参考方案10】:

对于 ubuntu,如果其他人不起作用,请尝试以下步骤:

    cd ~ sudo apt-get remove php5-mcrypt sudo apt-get install php5-mcrypt sudo php5enmod mcrypt sudo service apache2 restart

希望这会有所帮助。谢谢!

【讨论】:

【参考方案11】:

让 Laravel 在 Apache 上工作

PHP 版本:PHP 5.5.9

Ubuntu 版本:14.04

我有一个在 Windows 上工作的 laravel 项目。当我将它复制到 ubuntu 服务器时,我开始收到 mcrypt 错误。经过数小时的反复试验

让工匠命令发挥作用

(如果您在使用 artisan 命令行工具时遇到 mcrypt 错误)

我做了很多试验和错误,所以每次我之前运行 php5enmod 命令时,我都会收到错误消息。但是在全新安装时没有错误消息。在这一步之后,我得到了工匠命令的工作

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

修复浏览器错误

(如果您在访问本地 laravel 索引页面时在浏览器中遇到 mcrypt 错误)

sudo nano /etc/php5/apache2/php.ini

在 php ini 的动态编译扩展部分下添加以下行

extension=mcrypt.so

重启 apache 服务器,清除 laravel 缓存,一切正常

【讨论】:

如果您正在处理php docker image,您还需要运行docker-php-ext-install mcrypt。在图像上测试:php:5.6.31-apache。没有它,php -m 不会显示 mcrypt【参考方案12】:

对于 Ubuntu 14.04 上的 php-fpm 安装,以下对我有用:

sudo apt-get install php5-mcrypt

这将在/etc/php5/mods-available/ 内创建mcrypt.ini 文件

然后

sudo php5enmod mcrypt

将在以下位置创建符号链接:/etc/php5/fpm/conf.d/

只需重启 php-fpm 服务 sudo service php5-fpm restart

【讨论】:

【参考方案13】:

我的操作系统是Yosemite

我通过查找配置路径解决了这个问题:

php --ini

示例输出:

Configuration File (php.ini) Path: /usr/local/etc/php/5.5
Loaded Configuration File:         /usr/local/etc/php/5.5/php.ini
Scan for additional .ini files in: /usr/local/etc/php/5.5/conf.d
Additional .ini files parsed:      (none)

接下来的步骤:

    重命名或删除php55 ini文件 创建符号链接 重启 Apache 服务器

命令:

mv /usr/local/etc/php/5.5/php.ini /usr/local/etc/php/5.5/php.ini.default
ln -s /etc/php.ini /usr/local/etc/php/5.5/php.ini
sudo apachectl restart

然后您可以通过以下方式检查您的 php 模块:

php -m

【讨论】:

【参考方案14】:

只为吃货们,

yum install php-mcrypt
service httpd restart
chown -R apache:apache apppath

也许你需要安装remi repo

【讨论】:

【参考方案15】:

您需要一个多合一的环境。您可以使用 MAMP 或 XAMPP 或任何其他工具。安装这些工具之一后,您需要编辑(创建)您的 .bash_profile(假设您使用 bash)。

或者更简单、更专业的你可以使用 Laravel Homestead。

这里是官方文档的链接:http://laravel.com/docs/5.0/homestead

Jeffrey 也有关于它的免费教程: https://laracasts.com/series/laravel-5-fundamentals/episodes/2

我建议您使用宅基地,因为您将预先安装以下所有工具。

Ubuntu 14.04 PHP 5.6 HHVM Nginx mysql Postgres 节点(使用 Bower、Grunt 和 Gulp) Redis 内存缓存 豆茎 Laravel 特使 Fabric + HipChat 扩展

【讨论】:

【参考方案16】:

在 OS X 上

使用 MAMP

在终端输入命令which php,查看你使用的是哪个版本的PHP。如果不是 MAMP 的 PHP 版本,则需要更新 Bash 使用的 $PATH 变量。

首先,您应该使用命令“cd /Applications/MAMP/bin/php”从 MAMP 检查哪个 php 版本并记下版本(例如,php5.6.7)。

知道版本后,您应该编辑~/.bash_profile 文件(即您的主目录中的.bash_profile)并添加一个导出行:

    export PATH=/Applications/MAMP/bin/php/php5.6.7/bin:$PATH

确保将 php5.6.7 替换为您在 MAMP 中选择的 PHP 版本。

文件保存后,请确保关闭终端并再次打开它。完成后,您将使用 MAMP 附带的 PHP。


一种轻松找到需要放入.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

将这三行复制并粘贴到终端将正确输出在 MAMP 控制面板中选择的 PHP 版本。

使用 Homebrew/MacPorts

如果您使用的是这两个包管理器中的任何一个附带的 PHP,请确保您的 path 包含 /usr/local/bin/ (Homebrew) 或 /opt/local/bin (MacPorts)。

使用 MacPorts 检查 PHP 路径

您可以使用 MacPorts 使用以下命令找到 PHP 的确切位置:

port contents php70 | grep bin/php

请注意,您应该将php70 替换为您已安装的PHP 版本。

用 Homebrew-php 检查 PHP 路径

Homebrew-php (https://github.com/Homebrew/homebrew-php) 是一个拥有各种不同版本 PHP 的水龙头。

您可以使用 Homebrew 使用以下命令找到 PHP 的确切位置:

brew --prefix homebrew/php/php56

请注意,您应该将 php56 替换为您已安装的 PHP 版本。

【讨论】:

【参考方案17】:

如果您使用的是 Z Shell,只需执行以下操作:

    打开终端 须藤nano ~/.zshrc 粘贴这个; export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH 保存 奔跑 source ~/.zshrc 运行 which php - 你应该得到 MAMP 5.6.10 路径

5.6.10 是您在 MAMP 中设置的 PHP 版本。

【讨论】:

【参考方案18】:

带有 brew 的 OSX

$ brew install mcrypt php70-mcrypt

我运行的是 PHP 7.0.x,所以如果您使用的是不同的版本,请将“php70”更改为您的版本。 如其他答案所述,您可以使用$ php -v查看您的php版本。

【讨论】:

【参考方案19】:

对于那些今天仍然来这里的人:

Laravel 不再需要 mcrypt 扩展mcrypt 已过时,libmcrypt 的最后一次更新是在 2007 年。Laravel 4.2 也已过时,不再提供支持。最好(=安全)的解决方案是更新到 Laravel >5.1(在 Laravel 5.2 之前没有 LTS)。

Mcrypt 已于 2015 年 6 月从 Laravel 中移除:https://github.com/laravel/framework/pull/9041

【讨论】:

我通过运行宅基地供应解决了我的问题【参考方案20】:

在 Ubuntu 14.04 中

sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt

Ubuntu 16.04

sudo apt-get install php-mcrypt
sudo phpenmod mcrypt

Ubuntu 18.04

sudo apt install php7.0-mcrypt
sudo phpenmod mcrypt

sudo apt install php7.2-mcrypt
sudo phpenmod mcrypt

【讨论】:

【参考方案21】:

sudo php 安装 mcrypt

sudo php5enmod mcrypt

【讨论】:

虽然您的评论在技术上可能是正确的,但我们努力在 *** 上为您的答案提供一些解释。此外,似乎 OP 已经安装了mcrypt,您能否详细说明为什么您认为这会解决 OP 的问题?【参考方案22】:

在 ubuntu 14.04 中基于您的 php 版本:5.6,7.0,7.1,7.2,7.3

sudo apt-get install phpversion-mcrypt

sudo apt-get install php7.1-mcrypt

sudo phpenmod mcrypt 

【讨论】:

以上是关于Laravel 需要 Mcrypt PHP 扩展的主要内容,如果未能解决你的问题,请参考以下文章

PHP Laravel Mcrypt PHP扩展需要[重复]

Laravel 需要 Mcrypt PHP 扩展

Laravel 需要 Mcrypt PHP 扩展

Laravel 需要 Mcrypt PHP 扩展

安装 Laravel 时出错:需要 Mcrypt PHP 扩展

Laravel 中需要 Mcrypt PHP 扩展 [重复]