Laravel需要Mcrypt PHP扩展

Pat*_*eck 408 php mcrypt laravel laravel-4

我试图使用migrate功能Laravel 4OSX.但是,我收到以下错误:

Laravel requires the Mcrypt PHP extension.
Run Code Online (Sandbox Code Playgroud)

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

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

在此输入图像描述

Jus*_*nHo 337

你安装了MAMP吗?

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

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

.bash_profile,添加以下行:

export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

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

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

它现在应该工作了.

  • 当然你不需要MAMP来获得Mcrypt.这个答案适用于在他们的计算机上安装了多个PHP版本的人,例如XAMPP或MAMP,或其他人. (48认同)
  • 你不需要MAMP来获得Mcrypt. (18认同)
  • 每个人都不使用MAMP,你有其他人的答案吗? (6认同)
  • 刚想我要指出,`cd~`非常重要,你必须打开那里存在的`.bash_profile`,同样重要的是你必须关闭你的终端并重新打开才能加载新的bash变量.只需确保运行哪个php来验证您的更改已应用,快乐编码! (2认同)

Jas*_*wis 271

启用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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

在所有Ubuntu版本中,您需要在安装后启用mod.你可以这样做php5enmod.

sudo php5enmod mcrypt
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

笔记

  • 这对我在Ubuntu上工作,谢谢!很奇怪`sudo apt-get install php5-mcrypt`实际上并没有完全安装扩展. (4认同)

Bry*_*n P 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中的路径相同.

mcrypt错误的原因是因为你的Mac使用它的原生php,你需要将它改为一个xampp.

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

  • 也是一个很好的答案!对于MAMP应该这样:`"export PATH =/Applications/MAMP/bin/php/php5.4.10/bin:$ PATH"` (12认同)
  • 立即运行.bash_profile,通常需要重新启动才能运行这些bash (6认同)
  • 对于那些没有〜/ .bash_profile的人,请尝试检查〜/ .bashrc (3认同)

ooz*_*zal 87

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

brew install homebrew/php/php56-mcrypt

干杯!

  • 这实际上是`$ brew install homebrew/php/php55-mcrypt`,否则得到`错误:没有名为"php55-mcrypt"的公式 (4认同)
  • 将此答案附加到此主题的主要答案,以使其成为更全面的资源将是很棒的.感谢Lauren提到的快速建议,这确实解决了这个问题. (3认同)

mpp*_*les 46

使用Ubuntu,只是

sudo php5enmod mcrypt
Run Code Online (Sandbox Code Playgroud)

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


Nan*_*mar 37

在Ubuntu(PHP-FPM,Nginx)

sudo apt-get install php5-mcrypt
Run Code Online (Sandbox Code Playgroud)

安装php5-mcrypt之后

你必须在mods-available中创建一个符号链接到ini文件:

sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini
Run Code Online (Sandbox Code Playgroud)

启用:

sudo php5enmod mcrypt
Run Code Online (Sandbox Code Playgroud)

重启php5-fpm:

sudo service php5-fpm restart
Run Code Online (Sandbox Code Playgroud)

更多详情


Soj*_*ose 25

让Laravel在Apache上工作

PHP版本:PHP 5.5.9

Ubuntu版本:14.04

我在窗户上有一个工作的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
Run Code Online (Sandbox Code Playgroud)

修复浏览器错误

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

sudo nano /etc/php5/apache2/php.ini
Run Code Online (Sandbox Code Playgroud)

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

extension=mcrypt.so
Run Code Online (Sandbox Code Playgroud)

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


Sag*_*dal 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

希望有所帮助.谢谢 !


Pra*_*ary 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


Joe*_*dee 18

或者,使用:

sudo apt-get install php5-mcrypt
Run Code Online (Sandbox Code Playgroud)

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

sudo add-apt-repository ppa:ondrej/php5 
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)


d.d*_*lov 16

我的操作系统是Yosemite.

我通过查找配置路径来解决此问题:

php --ini
Run Code Online (Sandbox Code Playgroud)

示例输出:

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)
Run Code Online (Sandbox Code Playgroud)

下一步:

  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
Run Code Online (Sandbox Code Playgroud)

然后你可以检查你的PHP模块:

php -m
Run Code Online (Sandbox Code Playgroud)


Sea*_*ean 16

仅限于yumers,

yum install php-mcrypt
service httpd restart
chown -R apache:apache apppath
Run Code Online (Sandbox Code Playgroud)

也许你需要安装remi repo


The*_*lis 15

这在我的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


mbu*_*enc 14

您需要一个多合一的环境.您可以使用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扩展


aba*_*mer 10

扩展@JetLaggy:

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

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

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


Tim*_*eld 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
Run Code Online (Sandbox Code Playgroud)

确保将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
Run Code Online (Sandbox Code Playgroud)

将这三行复制并粘贴到终端中将正确输出在MAMP控制面板中选择的PHP版本.

使用Homebrew/MacPorts

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

使用MacPorts检查PHP路径

您可以使用MacPorts使用以下命令找到PHP的确切位置:

port contents php70 | grep bin/php
Run Code Online (Sandbox Code Playgroud)

请注意,您应该替换php70已安装的PHP版本.

使用Homebrew-php检查PHP路径

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

您可以使用Homebrew使用以下命令找到PHP的确切位置:

brew --prefix homebrew/php/php56
Run Code Online (Sandbox Code Playgroud)

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


Gow*_*man 6

在Ubuntu 14.04中

sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
Run Code Online (Sandbox Code Playgroud)

Ubuntu 16.04

sudo apt-get install php-mcrypt
sudo phpenmod mcrypt
Run Code Online (Sandbox Code Playgroud)

Ubuntu 18.04

sudo apt install php7.0-mcrypt
sudo phpenmod mcrypt
Run Code Online (Sandbox Code Playgroud)

要么

sudo apt install php7.2-mcrypt
sudo phpenmod mcrypt
Run Code Online (Sandbox Code Playgroud)


小智 5

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

  1. 打开终端
  2. 须藤 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路径

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


rap*_*2-h 5

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

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