ChatGPT解决这个技术问题 Extra ChatGPT

Laravel 需要 Mcrypt PHP 扩展

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

Laravel requires the Mcrypt PHP extension.

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

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

https://i.stack.imgur.com/ezq8a.png

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

S
Synchro

你有安装 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 来验证您的更改是否已应用,快乐的编码!
M
Machavity

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

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

操作系统

我听说有人在 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 完全删除了 mcrypt 扩展 Laravel 5.1 并且后来删除了对 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
g
gvlasov

对于使用 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 重启终端。输入哪个php。如果你做对了,它应该和#4中的路径一样。

mcrypt 错误的原因是因为您的 Mac 使用其本机 php,您需要将其更改为 xampp 的那个。

PS 我建议为 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"
o
oozzal

对于 OSX 上的非 MAMP 或 XAMPP 用户(安装了 homebrew):

brew install homebrew/php/php56-mcrypt

干杯!


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

使用 Ubuntu,只需

sudo php5enmod mcrypt

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


N
Nanhe Kumar

在 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。 (我跳过了软链接步骤)。有效 :)
S
Sojan Jose

让 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
P
Prateek Choudhary

对于 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


B
Barry

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

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

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


B
Barry

或者,使用:

sudo apt-get install php5-mcrypt

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

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

B
Barry

我的操作系统是 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

B
Barry

只为yumers,

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

也许您需要安装 remi repo


C
Community

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

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


m
mergenc

您需要一个多合一的环境。您可以使用 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)

雷迪斯

内存缓存

豆茎

Laravel 特使

Fabric + HipChat 扩展


a
abaumer

扩展@JetLaggy:

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

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

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


C
Community

在 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 版本。


r
rap-2-h

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

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


我通过运行宅基地供应解决了我的问题
今天我还是来了。并且仍在使用 Laravel 4.2
G
Gowthaman D

在 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

U
Unwired

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

打开终端 sudo nano ~/.zshrc 粘贴这个; export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH Save Run source ~/.zshrc Run which php - 你应该得到 MAMP 5.6.10 路径

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


k
kris

OSX 与 brew

$ brew install mcrypt php70-mcrypt

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


A
Anubhav Tiwari

sudo php 安装 mcrypt sudo php5enmod mcrypt


虽然您的评论在技术上可能是正确的,但我们努力在 StackOverflow 上对您的答案进行一些解释。此外,似乎 OP 已经安装了 mcrypt,您能否详细说明为什么您认为这会解决 OP 的问题?
J
Jignesh Joisar

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

sudo apt-get install php{版本}-mcrypt

sudo apt-get install php7.1-mcrypt

sudo phpenmod mcrypt