Laravel需要Mcrypt PHP扩展

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

Laravel requires the Mcrypt PHP extension.

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

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

enter image description here

303392 次浏览

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

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

笔记

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

现在应该可以工作了。

对于使用XAMPP 1.7.3和Mac的用户

  1. 进入终端
  2. <李>输入which php
    • 如果它说/usr/bin/php,则继续执行3。
    • 李< / ul > < / >
    • 输入sudo nano ~/.bash_profile(如果你知道如何使用,可以输入sudo vim ~/.bash_profile)
    • 然后粘贴这个export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
    • Ctrl + O然后进入保存,然后Ctrl + X退出。
    • 类型cd ~
    • 类型. .bash_profile
    • 重启终端。
    • 输入which php。如果你做得正确,它应该与#4中的路径相同。

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

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

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

brew install homebrew/php/php56-mcrypt

干杯!

扩展一下@JetLaggy:

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

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

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

或者,使用:

sudo apt-get install php5-mcrypt

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

sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update

这解决了我在我的Linux薄荷本地环境https://askubuntu.com/questions/350942/cannot-get-mcrypt-for-php5

我需要在以下文件夹/etc/php5/apache2/conf.d/mcrypt.ini和/etc/php5/cli/conf.d/mcrypt.ini中创建一个符号链接到我的/etc/php5/conf.d/mcrypt.ini文件

使用Ubuntu

sudo php5enmod mcrypt

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

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,如果其他步骤不工作,请尝试以下步骤:

  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

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

让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上的php-fpm安装,以下操作对我来说是有效的:

sudo apt-get install php5-mcrypt

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

然后

sudo php5enmod mcrypt

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

重启php-fpm服务 sudo service php5-fpm restart < / p >

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

只是为了美味,

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

也许你需要安装雷米回购

你需要一个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 < / p >

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

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

在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

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

使用MacPorts检查PHP路径

你可以使用MacPorts命令找到PHP的确切位置:

port contents php70 | grep bin/php

注意,你应该用你已经安装的PHP版本替换php70

使用Homebrew-php检查PHP路径

Homebrew-php (https://github.com/Homebrew/homebrew-php)是一个拥有各种不同版本的PHP的tap。

你可以在Homebrew中使用以下命令找到PHP的确切位置:

brew --prefix homebrew/php/php56

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

如果你正在使用Z Shell,只需执行以下操作:

  1. 打开终端
  2. sudo 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版本。

自带冲泡的OSX

$ brew install mcrypt php70-mcrypt
我正在运行PHP 7.0。因此,如果您正在使用不同的版本,则将“php70”更改为您的版本 正如在其他答案中所述,你可以看到你的php版本$ php -v.

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

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

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

安装McRypt

Sudo php5enmod McRypt