Laravel 需要 Mcrypt PHP 扩展
Posted
技术标签:
【中文标题】Laravel 需要 Mcrypt PHP 扩展【英文标题】:Laravel requires the Mcrypt PHP extension 【发布时间】:2017-05-11 22:52:20 【问题描述】:我正在尝试在 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 mcrypt
和sudo 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扩展需要[重复]