454

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

Laravel requires the Mcrypt PHP extension.

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

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

在此处输入图像描述

4

22 回答 22

344

你有安装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。

它现在应该可以工作了。

于 2013-05-30T13:13:26.107 回答
304

启用 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

笔记

于 2013-05-30T09:17:21.260 回答
144

To those that uses XAMPP 1.7.3 and Mac

  1. Go to Terminal
  2. Enter which php
    • If it says /usr/bin/php, then proceed to 3.
  3. Enter sudo nano ~/.bash_profile (or sudo vim ~/.bash_profile if you know how to use it)
  4. Then paste this export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
  5. Ctrl+O then enter to save, then Ctrl+X to exit.
  6. Type cd ~
  7. type . .bash_profile
  8. restart terminal.
  9. Enter which php. If you did it right, it should be the same as the path in #4.

The reason for the mcrypt error is because your Mac uses its native php, you need to change it to the one xampp has.

P.S. I'd recommend using MAMP for Laravel 4 for Mac users, this issue will get resolved along with the php file info error without a sweat, and the php version of xampp is so outdated.

于 2013-06-19T13:26:38.170 回答
87

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

brew install homebrew/php/php56-mcrypt

干杯!

于 2013-11-18T03:58:30.790 回答
47

使用 Ubuntu,只需

sudo php5enmod mcrypt

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

于 2014-06-15T19:50:11.443 回答
38

在 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

更多详情

于 2014-07-01T09:38:18.940 回答
26

让 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缓存,一切正常

于 2014-10-02T20:12:19.030 回答
19

或者,使用:

sudo apt-get install php5-mcrypt

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

sudo add-apt-repository ppa:ondrej/php5 
sudo apt-get update
于 2013-12-27T12:17:54.253 回答
19

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

  1. cd ~
  2. sudo apt-get remove php5-mcrypt
  3. sudo apt-get install php5-mcrypt
  4. sudo php5enmod mcrypt
  5. sudo service apache2 restart

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

于 2014-08-06T20:09:15.150 回答
19

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

sudo apt-get install php5-mcrypt

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

然后

sudo php5enmod mcrypt

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

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

于 2014-12-19T07:00:53.623 回答
16

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

下一步:

  1. 重命名或删除 php55 ini 文件
  2. 创建符号链接
  3. 重启 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
于 2015-01-08T13:03:40.387 回答
16

只为yumers,

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

也许你需要安装remi repo

于 2015-01-13T06:09:22.673 回答
15

这在我的 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

于 2014-02-17T10:31:27.597 回答
14

您需要一个多合一的环境。您可以使用 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 扩展
于 2015-03-02T19:31:15.883 回答
10

扩展@JetLaggy:

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

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

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

于 2013-12-10T22:44:41.970 回答
9

在 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) 或(MacPorts)。/opt/local/bin

使用 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 版本。

于 2015-09-18T03:43:05.930 回答
7

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

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

于 2017-03-17T16:14:33.047 回答
7

在 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
于 2017-05-05T16:42:55.373 回答
5

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

  1. 打开终端
  2. 须藤nano ~/.zshrc
  3. 粘贴这个;export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
  4. 节省
  5. source ~/.zshrc
  6. 运行 which php- 你应该得到 MAMP 5.6.10 路径

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

于 2016-01-20T03:43:24.410 回答
3

OSX 与 brew

$ brew install mcrypt php70-mcrypt

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

于 2017-01-28T05:41:55.510 回答
0

在 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 
于 2018-10-04T12:02:05.227 回答
0

须藤 php 安装 mcrypt

sudo php5enmod mcrypt

于 2018-09-18T07:02:42.183 回答