Laravel需要Mcrypt PHP扩展

Laravel需要Mcrypt PHP扩展,php,laravel,laravel-4,mcrypt,Php,Laravel,Laravel 4,Mcrypt,我正在尝试使用OSX上Laravel4中的migrate函数。但是,我得到以下错误: Laravel requires the Mcrypt PHP extension. 据我所知,它已经启用(见下图) 出了什么问题,我该如何解决 支持web的扩展和支持命令行的扩展可能有所不同。在终端中运行php-m,检查是否列出了mcrypt。如果没有,则通过从终端运行php--ini来检查命令行从何处加载php.ini文件 在这个php.ini文件中,您可以启用扩展名 OSX 我听说有人在OSX上遇到问题

我正在尝试使用OSX上Laravel4中的
migrate
函数。但是,我得到以下错误:

Laravel requires the Mcrypt PHP extension.
据我所知,它已经启用(见下图)

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


支持web的扩展和支持命令行的扩展可能有所不同。在终端中运行
php-m
,检查是否列出了
mcrypt
。如果没有,则通过从终端运行
php--ini
来检查命令行从何处加载
php.ini
文件

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

OSX 我听说有人在OSX上遇到问题,因为终端指向OSX附带的本机PHP。相反,您应该更新bash概要文件,以包含到PHP的实际路径。类似这样的东西(我实际上没有使用OSX,所以这可能不是100%):

Ubuntu 在Ubuntu的早期版本(14.04之前)上,当您运行
sudo apt get install php5 mcrypt
时,它实际上不会将扩展安装到可用的
mods中。你需要把它符号化

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
注释

  • PHP7.1已弃用mcrypt,7.2已弃用
  • Laravel 5.1及更高版本

您是否安装了MAMP

在终端中使用
哪个php
,查看您正在使用哪个版本的php

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

.bash\u profile
中,添加以下行:

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

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

然后
重新启动
终端,查看您现在使用的是哪种PHP


对于那些使用XAMPP1.7.3和Mac的用户来说,它现在应该可以工作了

  • 到终点站
  • 输入
    哪个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_配置文件
  • 重新启动终端
  • 输入
    哪个php
    。如果你做对了,它应该与#4中的路径相同
  • mcrypt错误的原因是因为您的Mac使用其本机php,您需要将其更改为xampp拥有的php

    附言。
    我建议Mac用户使用适用于Laravel 4的MAMP,这个问题会随着php文件信息错误的出现而迎刃而解,而且xampp的php版本已经过时了。

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

    brew安装自制/php/php56 mcrypt


    干杯

    在时差上展开:

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

    所以我更新了MAMP

    这对我的特殊设置起到了作用。我不得不调整我的路径以反映PHP的更新版本,但一旦我这样做了,一切都正常了

    或者,使用:

    sudo apt-get install php5-mcrypt
    
    不确定这是否适用于标准PHP安装-我使用以下软件包安装了
    PHP5.5.7

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

    这在我的LinuxMint本地环境中为我解决了这个问题

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

    sudo php5enmod mcrypt
    
    他为我做了这件事。您不需要重新启动Apache,因为您只需要从CLI使用PHP。

    在Ubuntu(PHP-FPM,Nginx)中

    安装php5 mcrypt后

    您必须使mods中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
    

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

  • cd~
  • sudo apt get remove php5 mcrypt
  • sudo apt get install php5 mcrypt
  • sudo php5enmod mcrypt
  • sudo服务apache2重启

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

    让Laravel在Apache上工作

    PHP版本:PHP5.5.9

    Ubuntu版本:14.04

    我在windows上有一个正在工作的laravel项目。当我把它复制到ubuntu服务器上时,我开始得到mcrypt错误。这是经过数小时反复试验后得出的结论

    让artisan命令正常工作

    (如果在使用artisan命令行工具时出现mcrypt错误)

    我做了很多尝试和错误,所以每次运行php5enmod命令之前,我都会收到错误消息。但在新安装时没有错误消息。这一步之后,我让artisan命令开始工作

    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错误)

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

    extension=mcrypt.so
    

    重新启动apache服务器,清除laravel缓存和一切工作

    对于Ubuntu 14.04上的php fpm安装,以下操作对我有效:

    sudo apt get install php5 mcrypt

    这将在
    /etc/php5/mods available/

    然后

    sudo php5enmod mcrypt

    将在中创建符号链接: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
    sudo nano /etc/php5/apache2/php.ini
    
    extension=mcrypt.so
    
    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)
    
    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 -m
    
    yum install php-mcrypt
    service httpd restart
    chown -R apache:apache apppath
    
        export PATH=/Applications/MAMP/bin/php/php5.6.7/bin:$PATH
    
        echo export PATH=`cat /Applications/MAMP/conf/apache/httpd.conf \
             | grep php | grep -i LoadModule | head -n1 \
             | sed -e 's/^[^\/]*\/\(.*\)\/mod.*/\/\1/'`/bin:\$PATH
    
    port contents php70 | grep bin/php
    
    brew --prefix homebrew/php/php56
    
    $ brew install mcrypt php70-mcrypt
    
    sudo apt-get install php5-mcrypt
    sudo php5enmod mcrypt
    
    sudo apt-get install php-mcrypt
    sudo phpenmod mcrypt
    
    sudo apt install php7.0-mcrypt
    sudo phpenmod mcrypt
    
    sudo apt install php7.2-mcrypt
    sudo phpenmod mcrypt
    
    sudo apt-get install php7.1-mcrypt
    
    sudo phpenmod mcrypt