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

Laravel requires the Mcrypt PHP extension.

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

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


当前回答

让Laravel在Apache上工作

PHP版本:PHP 5.5.9

Ubuntu版本:14.04

我有一个关于窗户的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缓存和所有工作

其他回答

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 (PHP-FPM,Nginx)

sudo apt-get install php5-mcrypt

安装php5-mcrypt后

你必须使一个符号链接到ini文件在mods-available:

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

更详细地

使用Ubuntu

sudo php5enmod mcrypt

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

对于使用XAMPP 1.7.3和Mac的用户

进入终端 输入哪个php 如果显示的是/usr/bin/php,则继续执行3。 输入sudo nano ~/。Bash_profile(或sudo vim ~/。如果你知道如何使用Bash_profile) 然后粘贴此导出PATH="/Applications/XAMPP/xamppfiles/bin:$PATH" 然后按Ctrl+O输入保存,然后按Ctrl+X退出。 cd ~ 输入.bash_profile 重启终端。 输入哪个php。如果你做得正确,它应该与#4中的路径相同。

mcrypt错误的原因是因为你的Mac使用它的原生php,你需要将它更改为xampp拥有的。

注: 我建议Mac用户在Laravel 4中使用MAMP,这个问题会随着php文件信息错误一起得到解决,而且php版本的xampp已经过时了。

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