Laravel需要Mcrypt PHP扩展
我正在尝试在OSX
上使用Laravel 4
的migrate
function。 但是,我收到以下错误:
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版本。
然后restart
terminal,看看你正在使用哪个PHP。
它应该现在工作。
对于那些使用XAMPP 1.7.3和Mac的人
- 去terminal
- input
which php
- 如果它显示
/usr/bin/php
,则继续执行3。
- 如果它显示
- input
sudo 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。
- input
which 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