Laravel需要Mcrypt PHP扩展
我正在尝试在OSX上使用Laravel 4的migratefunction。 但是,我收到以下错误: 
 Laravel requires the Mcrypt PHP extension. 
据我所知,它已经启用(见下图)。
什么是错的,我该如何解决?

 启用了Web的扩展和命令行启用的扩展可以不同。 在你的terminal运行php -m ,检查mcrypt是否被列出。 如果不是,那么通过从terminal运行php --ini来检查命令行加载你的php.ini文件的位置。 
 在这个php.ini文件中,你可以启用扩展。 
OSX
我听说OSX上的人遇到问题,因为terminal指向OSX附带的原生PHP。 您应该更新您的bashconfiguration文件,以包含PHP的实际path。 就像这样(我实际上并没有使用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,你就需要启用这个mod。 你可以用php5enmod来做到这php5enmod 。 
 sudo php5enmod mcrypt sudo service apache2 restart 
你有MAMP吗?
 在terminal中使用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版本,然后replace为上面的PHP版本。 
 然后restartterminal,看看你正在使用哪个PHP。 
它应该现在工作。
对于那些使用XAMPP 1.7.3和Mac的人
- 去terminal
-  inputwhich php-  如果它显示/usr/bin/php,则继续执行3。
 
-  如果它显示
-  inputsudo nano ~/.bash_profile(或者如果你知道如何使用sudo vim ~/.bash_profile)
-  然后粘贴这个export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
- 然后按Ctrl + O进行保存,然后按Ctrl + X退出。
-  键入cd ~
-  types. .bash_profile. .bash_profile
- 重启terminal。
-  inputwhich php。 如果你做得对,那就应该和第四条路一样。
mcrypt错误的原因是因为你的Mac使用其本地的PHP,你需要改变它的一个XAMPP了。
PS我build议使用MAMP为Mac用户的Laravel 4,这个问题将得到解决,随着PHP文件信息错误没有汗水,和XAMPP的PHP版本是如此过时。
对于OSX上的非MAMP或XAMPP用户(安装了自制软件):
 brew install homebrew/php/php56-mcrypt 
干杯!
使用Ubuntu,只是
 sudo php5enmod mcrypt 
为我做了诡计。 您不需要重新启动Apache,因为您只需从CLI使用PHP。
在Ubuntu(PHP-FPM,Nginx)
 sudo apt-get install php5-mcrypt 
安装php5-mcrypt后
您必须在mods-available中创buildini文件的符号链接:
 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 
更多详情
获得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的dynamic编译的扩展部分下添加下面的行
 extension=mcrypt.so 
重新启动Apache服务器,清除laravelcaching和一切工作
或者,使用:
 sudo apt-get install php5-mcrypt 
  (不知道这是否会工作在标准的PHP安装 – 我安装了php 5.5.7使用包: 
 sudo add-apt-repository ppa:ondrej/php5 sudo apt-get update 
)
对于ubuntu,如果其他人不工作,请尝试以下步骤:
 cd ~ 
然后
  sudo apt-get remove php5-mcrypt 
然后
 sudo apt-get install php5-mcrypt 
然后
 sudo php5enmod mcrypt 
最后
 sudo service apache2 restart 
希望这会有所帮助。 谢谢 !
对于Ubuntu 14.04上的php-fpm安装,以下工作适用于我:
 sudo apt-get install php5-mcrypt 
 这将在/etc/php5/mods-available/内创buildmcrypt.ini文件, 
然后
 sudo php5enmod mcrypt 
 将在/etc/php5/fpm/conf.d/创build一个符号链接 
 只需重新启动php-fpm服务sudo service php5-fpm restart 
我的操作系统是优胜美地。
我通过以下命令解决了这个问题:
 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文件
 mv /usr/local/etc/php/5.5/php.ini /usr/local/etc/php/5.5/php.ini.default 
之后创build符号链接
 ln -s /etc/php.ini /usr/local/etc/php/5.5/php.ini 
并重新启动Apache服务器
 sudo apachectl restart 
之后,您可以通过以下方式检查您的php模块:
 php -m 
这解决了我在我的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文件中创build符号链接/mcrypt.ini
就为了这个,
 yum install php-mcrypt service httpd restart chown -R apache:apache apppath 
也许你需要安装remi repo,请参考http://rpms.famillecollet.com/
你需要一个全在一个环境。 您可以使用MAMP或XAMPP或任何其他工具。 安装这些工具后,您将需要编辑(创build).bash_profile(假设您使用bash)。
甚至可以使用Laravel Homestead,甚至更简单,更专业。
这是官方文档的链接: http : //laravel.com/docs/5.0/homestead
Jeffrey还有一个关于它的免费教程: https : //laracasts.com/series/laravel-5-fundamentals/episodes/2
我build议你去家园,因为你会预安装所有以下工具。
- Ubuntu 14.04
- PHP 5.6
- HHVM
- Nginx的
- MySQL的
- Postgres的
- 节点(与鲍尔,咕噜和一口气)
- Redis的
- Memcached的
- Beanstalkd
- Laravel特使
- Fabric + HipChat扩展
在@JetLaggy上展开:
在反复尝试用MAMP目录修改.bash_profile之后,我改变了MAMP php目录的文件权限,并能够得到“哪个php”来显示正确的目录。 麻烦的是,其他function无法正常工作,如“php -v”。
所以我更新了MAMP。 http://documentation.mamp.info/en/mamp/installation/updating-mamp
这对我的特定设置做了窍门。 我不得不调整我的path来反映PHP的更新版本,但是一旦我做了,一切都奏效了!
在OS X上
使用MAMP
 在terminalinput命令which php来查看你正在使用哪个版本的PHP。 如果它不是来自MAMP的PHP版本,那么Bash使用的$ PATHvariables将需要更新。 
首先,您应该使用命令“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中select的PHP版本replacephp5.6.7。
保存文件后,确保closuresterminal并再次打开。 一旦完成,您将使用MAMP附带的PHP。
 一种方法可以很容易地find你需要放在你的.bash_profile就是在你的terminal里面运行下面的命令: 
  echo export PATH=`cat /Applications/MAMP/conf/apache/httpd.conf \ | grep php | grep -i LoadModule | head -n1 \ | sed -e 's/^[^\/]*\/\(.*\)\/mod.*/\/\1/'`/bin:\$PATH 
将这三行复制粘贴到terminal将正确输出在MAMP控制面板中select的PHP版本。
使用自制软件/ MacPorts
 如果您使用的是这两个软件包pipe理器中的任何一个的PHP,请确保您的path包含/usr/local/bin/ (Homebrew)或/opt/local/bin (MacPorts)。 
用MacPorts检查PHPpath
您可以使用MacPorts使用以下命令findPHP的确切位置:
 port contents php70 | grep bin/php 
 请注意,您应该使用已安装的PHP版本replacephp70 。 
用Homebrew-php检查PHPpath
Homebrew-php( https://github.com/Homebrew/homebrew-php )是一个有各种不同版本的PHP的tap。
您可以使用Homebrew使用以下命令findPHP的确切位置:
 brew --prefix homebrew/php/php56 
 请注意,您应该使用您安装的PHP版本replacephp56 。 
如果您正在使用Z Shell,只需执行以下操作:
- 打开terminal
-   sudo nano ~/.zshrc
-  粘贴这个; export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
- 保存
-   运行 source ~/.zshrc
-   运行 which php– 你应该得到MAMP 5.6.10的path
5.6.10是您在MAMP中设置的PHP版本。
OSX酿造
 $ brew install mcrypt php70-mcrypt 
 我正在运行PHP 7.0.x,所以如果您使用的是不同的版本,请将“php70”更改为您的版本。 
 正如其他答案所述,你可以看到你的PHP版本$ php -v 。 
对于今天仍然来到这里的人:
  Laravel不再需要mcrypt扩展。  mcrypt已经过时,libmcrypt的最后一次更新是在2007年。Laravel 4.2也已经过时了,没有更多的支持。 最好的(安全)解决scheme是更新到Laravel> 5.1(在Laravel 5.2之前没有LTS)。 
Mcrypt于2015年6月从Laravel移除: https : //github.com/laravel/framework/pull/9041
在Ubuntu 14.04
 sudo apt-get install php5-mcrypt sudo php5enmod mcrypt 
Ubuntu 16.04
 sudo apt-get install php-mcrypt sudo phpenmod mcrypt