Laravel需要Mcrypt PHP扩展

我正在尝试在OSX上使用Laravel 4migratefunction。 但是,我收到以下错误:

 Laravel requires the Mcrypt PHP extension. 

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

什么是错的,我该如何解决?

在这里输入图像描述

启用了Web的扩展和命令行启用的扩展可以不同。 在你的terminal运行php -m ,检查mcrypt是否被列出。 如果不是,那么通过从terminal运行php --ini来检查命令行加载你的php.ini文件的位置。

在这个php.ini文件中,你可以启用扩展。

OSX

我听说OSX上的人遇到问题,因为terminal指向OSX附带的原生PHP。 您应该更新您的bashconfiguration文件,以包含PHP的实际path。 就像这样(我实际上并没有使用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,你就需要启用这个mod。 你可以用php5enmod来做到这php5enmod

 sudo php5enmod mcrypt sudo service apache2 restart 

你有MAMP吗?

在terminal中使用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版本,然后replace为上面的PHP版本。

然后restartterminal,看看你正在使用哪个PHP。

它应该现在工作。

对于那些使用XAMPP 1.7.3和Mac的人

  1. 去terminal
  2. inputwhich php
    • 如果它显示/usr/bin/php ,则继续执行3。
  3. inputsudo nano ~/.bash_profile (或者如果你知道如何使用sudo vim ~/.bash_profile
  4. 然后粘贴这个export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
  5. 然后按Ctrl + O进行保存,然后按Ctrl + X退出。
  6. 键入cd ~
  7. types. .bash_profile . .bash_profile
  8. 重启terminal。
  9. inputwhich php 。 如果你做得对,那就应该和第四条路一样。

mcrypt错误的原因是因为你的Mac使用其本地的PHP,你需要改变它的一个XAMPP了。

PS我build议使用MAMP为Mac用户的Laravel 4,这个问题将得到解决,随着PHP文件信息错误没有汗水,和XAMPP的PHP版本是如此过时。

对于OSX上的非MAMP或XAMPP用户(安装了自制软件):

brew install homebrew/php/php56-mcrypt

干杯!

使用Ubuntu,只是

 sudo php5enmod mcrypt 

为我做了诡计。 您不需要重新启动Apache,因为您只需从CLI使用PHP。

在Ubuntu(PHP-FPM,Nginx)

 sudo apt-get install php5-mcrypt 

安装php5-mcrypt后

您必须在mods-available中创buildini文件的符号链接:

 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 

更多详情

获得Laravel在Apache上的工作

PHP版本:PHP 5.5.9

Ubuntu版本:14.04

我有一个在windows上工作的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的dynamic编译的扩展部分下添加下面的行

 extension=mcrypt.so 

重新启动Apache服务器,清除laravelcaching和一切工作

或者,使用:

 sudo apt-get install php5-mcrypt 

(不知道这是否会工作在标准的PHP安装 – 我安装了php 5.5.7使用包:

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

对于ubuntu,如果其他人不工作,请尝试以下步骤:

 cd ~ 

然后

  sudo apt-get remove php5-mcrypt 

然后

 sudo apt-get install php5-mcrypt 

然后

 sudo php5enmod mcrypt 

最后

 sudo service apache2 restart 

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

对于Ubuntu 14.04上的php-fpm安装,以下工作适用于我:

sudo apt-get install php5-mcrypt

这将在/etc/php5/mods-available/内创buildmcrypt.ini文件,

然后

sudo php5enmod mcrypt

将在/etc/php5/fpm/conf.d/创build一个符号链接

只需重新启动php-fpm服务sudo service php5-fpm restart

我的操作系统是优胜美地。

我通过以下命令解决了这个问题:

 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文件

 mv /usr/local/etc/php/5.5/php.ini /usr/local/etc/php/5.5/php.ini.default 

之后创build符号链接

 ln -s /etc/php.ini /usr/local/etc/php/5.5/php.ini 

并重新启动Apache服务器

 sudo apachectl restart 

之后,您可以通过以下方式检查您的php模块:

 php -m 

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

我需要在/etc/php5/apache2/conf.d/mcrypt.ini和/etc/php5/cli/conf.d中的/etc/php5/conf.d/mcrypt.ini文件中创build符号链接/mcrypt.ini

就为了这个,

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

也许你需要安装remi repo,请参考http://rpms.famillecollet.com/

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

甚至可以使用Laravel Homestead,甚至更简单,更专业。

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

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

我build议你去家园,因为你会预安装所有以下工具。

  • Ubuntu 14.04
  • PHP 5.6
  • HHVM
  • Nginx的
  • MySQL的
  • Postgres的
  • 节点(与鲍尔,咕噜和一口气)
  • Redis的
  • Memcached的
  • Beanstalkd
  • Laravel特使
  • Fabric + HipChat扩展

在@JetLaggy上展开:

在反复尝试用MAMP目录修改.bash_profile之后,我改变了MAMP php目录的文件权限,并能够得到“哪个php”来显示正确的目录。 麻烦的是,其他function无法正常工作,如“php -v”。

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

这对我的特定设置做了窍门。 我不得不调整我的path来反映PHP的更新版本,但是一旦我做了,一切都奏效了!

在OS X上

使用MAMP

在terminalinput命令which php来查看你正在使用哪个版本的PHP。 如果它不是来自MAMP的PHP版本,那么Bash使用的$ PATHvariables将需要更新。

首先,您应该使用命令“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 

确保你用你在MAMP中select的PHP版本replacephp5.6.7。

保存文件后,确保closuresterminal并再次打开。 一旦完成,您将使用MAMP附带的PHP。


一种方法可以很容易地find你需要放在你的.bash_profile就是在你的terminal里面运行下面的命令:

  echo export PATH=`cat /Applications/MAMP/conf/apache/httpd.conf \ | grep php | grep -i LoadModule | head -n1 \ | sed -e 's/^[^\/]*\/\(.*\)\/mod.*/\/\1/'`/bin:\$PATH 

将这三行复制粘贴到terminal将正确输出在MAMP控制面板中select的PHP版本。

使用自制软件/ MacPorts

如果您使用的是这两个软件包pipe理器中的任何一个的PHP,请确保您的path包含/usr/local/bin/ (Homebrew)或/opt/local/bin (MacPorts)。

用MacPorts检查PHPpath

您可以使用MacPorts使用以下命令findPHP的确切位置:

 port contents php70 | grep bin/php 

请注意,您应该使用已安装的PHP版本replacephp70

用Homebrew-php检查PHPpath

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

您可以使用Homebrew使用以下命令findPHP的确切位置:

 brew --prefix homebrew/php/php56 

请注意,您应该使用您安装的PHP版本replacephp56

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

  1. 打开terminal
  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的path

5.6.10是您在MAMP中设置的PHP版本。

OSX酿造

 $ brew install mcrypt php70-mcrypt 

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

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

Laravel不再需要mcrypt扩展。 mcrypt已经过时,libmcrypt的最后一次更新是在2007年。Laravel 4.2也已经过时了,没有更多的支持。 最好的(安全)解决scheme是更新到Laravel> 5.1(在Laravel 5.2之前没有LTS)。

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