我试图在OSX上使用Laravel 4中的迁移函数。然而,我得到以下错误:

Laravel requires the Mcrypt PHP extension.

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

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


当前回答

你安装了MAMP吗?

在终端中使用哪个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版本替换。

然后重新启动终端,查看您现在使用的是哪个PHP。

现在应该可以工作了。

其他回答

我的OS是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

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

使用自制程序/ MacPorts

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

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

注意,您应该用已经安装的PHP版本替换php56。

扩展一下@JetLaggy:

在一次又一次尝试用MAMP目录修改.bash_profile后,我改变了MAMP php目录的文件权限,并能够获得“which php”以显示正确的目录。问题是其他函数不起作用,比如'php -v'。

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

这对我的特殊设置很有效。我必须调整我的PATH以反映更新的PHP版本,但一旦我这样做了,一切都工作了!

自带冲泡的OSX

$ brew install mcrypt php70-mcrypt

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

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

Laravel不再需要mcrypt扩展了。McRypt已经过时,libmcrypt的最后一次更新是在2007年。Laravel 4.2也过时了,没有更多的支持。最好(=安全)的解决方案是更新到Laravel 9。x+ (Laravel 8;X还是可以的。但如果你正在升级,那么就升级到最新版本)。

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