首页 文章

Laravel需要Mcrypt PHP扩展

提问于
浏览
365

我想在 OSX Laravel 4 上使用 migrate 函数 . 但是,我收到以下错误:

Laravel requires the Mcrypt PHP extension.

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

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

enter image description here

22 回答

  • 1

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

    Laravel does not need mcrypt extension anymore . mcrypt 已过时,libmcrypt的最后一次更新是在2007年.Laravel 4.2也已过时且没有更多支持 . 最好的(=安全的)解决方案是更新到Laravel> 5.1(在Laravel 5.2之前没有LTS) .

    Mcrypt于2015年6月从Laravel被移除:https://github.com/laravel/framework/pull/9041

  • 12

    这在我的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文件中创建一个符号链接 . /mcrypt.ini

  • 35

    在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

  • 3

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

    或者甚至简单和专业,你可以使用Laravel Homestead .

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

    杰弗里还有一个关于它的免费教程: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特使

    • Fabric HipChat扩展

  • 1

    在Ubuntu 14.04

    sudo apt-get install php5-mcrypt
    sudo php5enmod mcrypt
    

    Ubuntu 16.04

    sudo apt-get install php-mcrypt
    sudo phpenmod mcrypt
    
  • 138

    或者,使用:

    sudo apt-get install php5-mcrypt
    

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

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

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

    • cd ~

    • sudo apt-get remove php5-mcrypt

    • sudo apt-get install php5-mcrypt

    • sudo php5enmod mcrypt

    • sudo service apache2 restart

    希望会有所帮助 . 谢谢 !

  • 7

    启用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版本上安装了'll need to enable the mod once it' . 你可以用 php5enmod 做到这一点 .

    sudo php5enmod mcrypt
    sudo service apache2 restart
    

    注意PHP 7.1弃用的mcrypt和7.2已完全删除了mcrypt扩展Laravel 5.1以后删除了对mcrypt的需求

  • 82

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

  • 238

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

    brew install homebrew/php/php56-mcrypt

    干杯!

  • 327

    扩展@JetLaggy:

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

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

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

  • 11

    在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

    如果您使用的是这两种方法中的任何一种,请确保 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版本 .

  • 0

    在ubuntu 14.04中基于你的版本php:5.6,7.0,7.1,7.2,7.3

    sudo apt-get install php -mcrypt

    sudo apt-get install php7.1-mcrypt
    
    sudo phpenmod mcrypt
    
  • 16

    仅限于yumers,

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

    也许你需要安装remi repo

  • 17

    sudo php install mcrypt sudo php5enmod mcrypt

  • 16

    使用Ubuntu,只是

    sudo php5enmod mcrypt
    

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

  • 13

    Getting Laravel working on Apache

    PHP版本:PHP 5.5.9

    Ubuntu版本:14.04

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

    getting artisan command working

    (如果在使用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
    

    fixing the browser error

    (如果在访问本地laravel索引页时在浏览器中出现mcrypt错误)

    sudo nano /etc/php5/apache2/php.ini
    

    在php ini的动态编译扩展部分下添加以下行

    extension=mcrypt.so
    

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

  • 13

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

    下一步:

    • 重命名或删除php55 ini文件

    • 创建符号链接

    • 重启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
    
  • -2

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

    • 转到终端

    • 输入 which php

    • 如果是 /usr/bin/php ,则继续执行3 .

    • 输入 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所拥有的 .

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

  • 3

    你有 MAMP 安装?

    在终端中使用 which php 查看您正在使用的PHP版本 .

    如果它不是来自MAMP的PHP版本,您应该在用户的主目录中编辑或添加 .bash_profile ,即: cd ~

    .bash_profile 中,添加以下行:

    export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH
    

    Edited: 首先,您应该使用命令 cd /Applications/MAMP/bin/php 来检查您正在使用的MAMP中的哪个PHP版本,然后替换为上面的PHP版本 .

    然后 restart 终端查看您现在使用的是哪个PHP .

    它现在应该工作了 .

  • 43

    OSX与brew

    $ brew install mcrypt php70-mcrypt
    

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

  • 22

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

    • 打开终端

    • sudo nano ~/.zshrc

    • 粘贴这个; export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH

    • Save

    • Run source ~/.zshrc

    • Run which php - 你应该得到MAMP 5.6.10路径

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

相关问题