Laravel需要Mcrypt PHP扩展


429

我正在尝试migrateLaravel 4上使用该功能OSX。但是,我收到以下错误:

Laravel requires the Mcrypt PHP extension.

据我了解,该功能已经启用(请参见下图)。

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

在此处输入图片说明


您使用Laravel 3还是4?
1

刚刚将信息添加到帖子中。是Laravel 4
Patrick Reck

4
也许这篇文章会为您提供帮助:stackoverflow.com/questions/14476181/…–
1

您使用的是内置PHP,还是安装了其他版本?如果是这样,您如何安装它?
Jamie Schembri

2
我使用自制软件找到了一个简单的解决方案:jorble.com/2013/04/install-php-mcrypt-in-macosx
gelviis 2013年

Answers:


288

启用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

笔记


4
这在Ubuntu上为我工作,谢谢!奇怪的是sudo apt-get install php5-mcrypt,实际上并没有完全安装扩展。
阿里斯蒂德斯2014年

Ubuntu
13.10-

1
显然,它已经将mcrypt ini安装到了mods-available中,我只是不知道php5enmod命令。使用它使它像魅力一样工作。谢谢!
imkingdavid

因此,就此而言,当我使用php -m时,我列出了mcrypt,当我使用哪个php时,它显示为/ usr / local / bin / php。香港专业教育学院试图用brew安装mcrypt,似乎已经奏效。。但是Laravel仍然说需要Mcrypt PHP扩展。
Marais Rossouw

1
像@imkingdavid一样,我也不需要符号链接。php5enmod就足够了。Ubuntu 14.04 LTS
Brett

340

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

现在应该可以正常工作了。


18
您不需要MAMP即可获得Mcrypt。
jackyalcine13年

48
当然,您不需要MAMP即可获得Mcrypt。该答案仅适用于在计算机上安装了多个PHP版本(例如XAMPP或MAMP或其他)的用户。
JustinHo

类似地,对于AMPPS用户:export PATH=/Applications/AMPPS/php-5.4/bin:$PATH...假设您要拍摄5.4.xx,那里还有5.3和5.5。
乔尔·梅隆

6
每个人都不使用MAMP,您对其他人有答案吗?
TuGordoBello 2015年

2
只是以为我会指出,这cd ~非常重要,您必须打开.bash_profile那里存在的那个,同样重要的是您必须关闭终端并重新打开以便加载新的bash变量。只要确保运行哪个php来验证您的更改已应用,编码愉快!
00:00有线

142

对于使用XAMPP 1.7.3和Mac的用户

  1. 前往终端
  2. 输入 which php
    • 如果显示/usr/bin/php,则继续执行3。
  3. 输入sudo nano ~/.bash_profile(或者sudo vim ~/.bash_profile如果您知道如何使用它)
  4. 然后贴上 export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
  5. Ctrl+O然后输入保存,然后Ctrl+X退出。
  6. 类型 cd ~
  7. 类型 . .bash_profile
  8. 重新启动终端。
  9. 输入which php。如果操作正确,则该路径应与#4中的路径相同。

mcrypt错误的原因是因为您的Mac使用其本机php,因此您需要将其更改为xampp拥有的一个。

PS我建议为Mac用户使用Laravel 4的MAMP,这个问题将与php文件信息错误一起得到解决,并且xampp的php版本已经过时了。


12
也是一个很好的答案!对于MAMP应该是这样的:"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
Foxinni

3
对于那些没有〜/ .bash_profile的用户,请尝试检查〜/ .bashrc
Ironwind

6
立即运行.bash_profile,通常您需要重新启动这些bash才能运行
Bryan P

发生了一件不好的事情,现在我的终端甚至无法识别sudo
Sunny R Gupta 2014年

它也适用于lampp,只需将路径更改为export PATH="/opt/lampp/bin:$PATH"
JTC

87

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

brew install homebrew/php/php56-mcrypt

干杯!


1
我担心这不适用于本机OSX PHP,但我只是安装了它,而不必弄乱我的PATH或任何东西。正常工作。好一个。
劳伦2014年

3
最好将此答案附加到该主题的主要答案中,以使其成为更全面的资源。正如Lauren所提到的,感谢您的快速建议,这确实解决了问题。
Bryan Rayner 2014年

4
这实际上是$ brew install homebrew/php/php55-mcrypt,否则得到了Error: No available formula with the name "php55-mcrypt"
Connor Leech 2015年

47

使用Ubuntu,

sudo php5enmod mcrypt

为我做了把戏。您无需重新启动Apache,因为仅需从CLI使用PHP。


37

在Ubuntu(PHP-FPM,Nginx)中

sudo apt-get install php5-mcrypt

安装php5-mcrypt后

您必须对在mods-available中的ini文件进行符号链接:

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

更多详情


我跑sudo aptitude -y install php5-mcrypt,其次是sudo php5enmod mcryptsudo service php5-fpm restart。(我跳过了软链接步骤)。它起作用了:)
Aditya MP

26

让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的动态编译扩展部分下添加以下行

extension=mcrypt.so

重新启动apache服务器,清除laravel缓存,一切正常


如果您正在处理php docker映像,则还需要运行docker-php-ext-install mcrypt。在图片上测试过:php:5.6.31-apache。没有那个,php -m就不会显示mcrypt
伊娃

19

对于Ubuntu 14.04上的php-fpm安装,以下内容对我有用:

sudo apt-get install php5-mcrypt

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

然后

sudo php5enmod mcrypt

将在以下位置创建符号链接: /etc/php5/fpm/conf.d/

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


19

对于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

希望会有所帮助。谢谢 !


19

或者,使用:

sudo apt-get install php5-mcrypt

不知道这是否适用于标准PHP安装-我php 5.5.7使用以下软件包安装:

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

16

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

16

只为尤默斯

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

也许您需要安装remi repo



14

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

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

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

Jeffrey对此也有一个免费的教程:https : //laracasts.com/series/laravel-5-fundamentals/episodes/2

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

  • Ubuntu 14.04
  • PHP 5.6
  • 虚拟机
  • Nginx的
  • 的MySQL
  • Postgres
  • 节点(带有Bower,Grunt和Gulp)
  • 雷迪斯
  • 记忆快取
  • 豆茎
  • Laravel特使
  • 面料+ HipChat扩展

10

在@JetLaggy上扩展:

在尝试用MAMP目录修改.bash_profile之后,我更改了MAMP php目录的文件许可权,并且能够获取“哪个php”以显示正确的目录。问题是其他功能不起作用,例如“ php -v”。

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

这为我的特定设置提供了窍门。我必须调整PATH以反映PHP的更新版本,但是一旦完成,一切都会正常!


9

在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

确保使用在MAMP中选择的PHP版本替换php5.6.7。

保存文件后,请确保关闭并关闭终端,然后再次打开。一旦完成,您将使用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版本。

使用Homebrew / MacPorts

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

使用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

请注意,您应该替换php56为已安装的PHP版本。


6

在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

5

如果您使用的是Z Shell,则只需执行以下操作:

  1. 打开终端
  2. 须藤 nano ~/.zshrc
  3. 粘贴这个; export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
  4. source ~/.zshrc
  5. 运行 which php -您应该获得MAMP 5.6.10路径

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


3

带Brew的OSX

$ brew install mcrypt php70-mcrypt

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


3

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

Laravel不再需要mcrypt扩展mcrypt已过时,对libmcrypt的最新更新是在2007年。Laravel 4.2也已过时,不再提供支持。最好的(=安全的)解决方案是将Laravel> 5.1更新(Laravel 5.2之前没有LTS)。

Mcrypt已于2015年6月从Laravel中删除:https : //github.com/laravel/framework/pull/9041


我通过运行宅基地提供解决了我的问题

0

须藤PHP安装mcrypt

须藤php5enmod mcrypt


1
从技术上来讲,尽管您的评论可能是正确的,我们还是在StackOverflow上为您的答案提供了一些解释。此外,似乎已经安装了OP mcrypt,您能否继续说明为什么您认为这可以解决OP的问题?
milo526

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.