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

Laravel requires the Mcrypt PHP extension.

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

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


当前回答

使用Ubuntu

sudo php5enmod mcrypt

帮我搞定了。你不需要重新启动Apache,因为你只需要从CLI使用PHP。

其他回答

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

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

brew install homebrew/php/php56-mcrypt

干杯!

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

对于Ubuntu 14.04上的php-fpm安装,以下操作对我来说是有效的:

安装php5-mcrypt

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

然后

Sudo php5enmod McRypt

将在:/etc/php5/fpm/conf.d/

重启php-fpm服务即可 Sudo service php5-fpm restart

扩展一下@JetLaggy:

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

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

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