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

Laravel requires the Mcrypt PHP extension.

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

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


当前回答

对于OSX上的非MAMP或XAMPP用户(已安装自制程序):

brew install homebrew/php/php56-mcrypt

干杯!

其他回答

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中。您需要对它进行符号链接。

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

在所有的Ubuntu版本中,你都需要在安装后启用mod。你可以用php5enmod来做。

sudo php5enmod mcrypt
sudo service apache2 restart

笔记 PHP 7.1弃用了mcrypt, 7.2完全删除了mcrypt扩展 Laravel 5.1和后来的版本不再需要mcrypt

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

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

现在应该可以工作了。

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

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

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

杰弗里还有一个关于它的免费教程: https://laracasts.com/series/laravel-5-fundamentals/episodes/2

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

Ubuntu 14.04 PHP 5.6 HHVM Nginx MySQL Postgres 节点(带有低沉、咕哝和吞咽) 复述, Memcached Beanstalkd Laravel特使 面料+ HipChat扩展

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

or

sudo apt install php7.2-mcrypt
sudo phpenmod mcrypt