Laravel需要Mcrypt PHP扩展

时间:2013-05-30 07:31:18

标签: php laravel laravel-4 mcrypt

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

Laravel requires the Mcrypt PHP extension.

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

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

enter image description here

22 个答案:

答案 0 :(得分:332)

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

现在应该可以了。

答案 1 :(得分:254)

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

注意

     

答案 2 :(得分:141)

对于那些使用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中的路径相同。
  10. mcrypt错误的原因是因为您的Mac使用其原生php,您需要将其更改为xampp所具有的。

    P.S。 我建议为Mac用户使用MAMP for Laravel 4,这个问题会随着php文件信息错误而解决,而且xampp的php版本已经过时了。

答案 3 :(得分:85)

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

brew install homebrew/php/php56-mcrypt

干杯!

答案 4 :(得分:46)

使用Ubuntu,只需

sudo php5enmod mcrypt

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

答案 5 :(得分: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

More detail

答案 6 :(得分:25)

让Laravel使用Apache

PHP版本:PHP 5.5.9

Ubuntu版本:14.04

我在Windows上有一个工作的laravel项目。当我将它复制到ubuntu服务器时,我开始收到mcrypt错误。经过大量的反复试验后,这是

让artisan命令正常工作

(如果您在使用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缓存以及所有工作

答案 7 :(得分: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

答案 8 :(得分: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
  6. 希望这会有所帮助。谢谢!

答案 9 :(得分:18)

或者,使用:

sudo apt-get install php5-mcrypt

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

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

答案 10 :(得分: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服务器
  4. 命令:

    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
    

答案 11 :(得分:16)

仅限于yumers,

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

也许您需要安装remi repo

答案 12 :(得分:15)

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

中为我解决了这个问题

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

答案 13 :(得分:13)

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

甚至简单而专业的你可以使用Laravel Homestead。

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

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

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

  • Ubuntu 14.04
  • PHP 5.6
  • HHVM
  • Nginx的
  • MySQL的
  • 的Postgres
  • 节点(有Bower,Grunt和Gulp)
  • Redis的
  • Memcached的
  • Beanstalkd
  • Laravel Envoy
  • Fabric + HipChat Extension

答案 14 :(得分:10)

扩展@JetLaggy:

一次又一次地尝试使用MAMP目录修改.bash_profile后,我更改了MAMP php目录的文件权限,并且能够获得'哪个php'来显示正确的目录。麻烦的是其他功能不起作用,例如'php -v'。

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

这对我的特定设置起了作用。我不得不调整我的PATH来反映PHP的更新版本,但是一旦我做了,一切都运行了!

答案 15 :(得分: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

确保将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版本。

使用Homebrew / MacPorts

如果您使用的是这两个软件包管理器之一的PHP,请确保您的path包含/usr/local/bin/(自制软件包)或/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版本。

答案 16 :(得分: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

答案 17 :(得分:5)

如果您使用的是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路径
  7. 5.6.10是您在MAMP中设置的PHP版本。

答案 18 :(得分:3)

OSX with brew

$ brew install mcrypt php70-mcrypt

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

答案 19 :(得分: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

答案 20 :(得分:0)

  

sudo php安装mcrypt

     

sudo php5enmod mcrypt

答案 21 :(得分:0)

在ubuntu 14.04中,根据您的php版本:5.6,7.0,7.1,7.2,7.3

  

sudo apt-get install php {version} -mcrypt

sudo apt-get install php7.1-mcrypt

sudo phpenmod mcrypt