我正在尝试使用migrate
Laravel 4
上的OSX
功能。但是,我收到以下错误:
Laravel requires the Mcrypt PHP extension.
据我了解,它已经启用(见下图)。
有什么问题,我该如何解决?
答案 0 :(得分:332)
您是否安装了 MAMP ?
在终端中使用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版本,然后替换为上面的PHP版本。
然后restart
终端查看您现在正在使用的PHP。
现在应该可以了。
答案 1 :(得分:254)
启用Web的扩展和启用命令行的扩展可能会有所不同。在终端中运行php -m
,然后检查是否列出了mcrypt
。如果不是,则通过从终端运行php.ini
来检查命令行加载php --ini
文件的位置。
在此php.ini
文件中,您可以启用扩展程序。
我听说OSX上的人因为终端指向OSX附带的本机PHP而遇到问题。您应该更新您的bash配置文件以包含PHP的实际路径。像这样的东西(我实际上并没有使用OSX,所以这可能不是100%):
export PATH=/usr/local/php5/bin:$PATH
在早期版本的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。您可以使用php5enmod
。
sudo php5enmod mcrypt
sudo service apache2 restart
注意
- PHP 7.1弃用mcrypt,7.2有removed the mcrypt extension entirely
- Laravel 5.1及更高版本removed the need for mcrypt
答案 2 :(得分:141)
对于那些使用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"
cd ~
. .bash_profile
which php
。如果你做得对,它应该与#4中的路径相同。mcrypt错误的原因是因为您的Mac使用其原生php,您需要将其更改为xampp所具有的。
P.S。 我建议为Mac用户使用MAMP for Laravel 4,这个问题会随着php文件信息错误而解决,而且xampp的php版本已经过时了。
答案 3 :(得分:85)
对于OSX上的非MAMP或XAMPP用户(安装了自制程序):
brew install homebrew/php/php56-mcrypt
干杯!
答案 4 :(得分:46)
使用Ubuntu,只需
sudo php5enmod mcrypt
为我做了诀窍。您不需要重新启动Apache,因为您只需要从CLI使用PHP。
答案 5 :(得分:37)
在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
答案 6 :(得分:25)
让Laravel使用Apache
PHP版本:PHP 5.5.9
Ubuntu版本:14.04
我在Windows上有一个工作的laravel项目。当我将它复制到ubuntu服务器时,我开始收到mcrypt错误。经过大量的反复试验后,这是
让artisan命令正常工作
(如果您在使用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的动态编译扩展部分下添加以下行
extension=mcrypt.so
重新启动apache服务器,清除laravel缓存以及所有工作
答案 7 :(得分: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
答案 8 :(得分:19)
对于ubuntu,如果其他人不工作,请尝试以下步骤:
cd ~
sudo apt-get remove php5-mcrypt
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
sudo service apache2 restart
答案 9 :(得分:18)
或者,使用:
sudo apt-get install php5-mcrypt
不确定这是否适用于标准PHP安装 - 我使用以下软件包安装php 5.5.7
:
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
答案 10 :(得分:16)
我的操作系统是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)
后续步骤:
命令:
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
答案 11 :(得分:16)
仅限于yumers,
yum install php-mcrypt
service httpd restart
chown -R apache:apache apppath
也许您需要安装remi repo
答案 12 :(得分:15)
这在我的Linux Mint本地环境https://askubuntu.com/questions/350942/cannot-get-mcrypt-for-php5
中为我解决了这个问题我需要在/etc/php5/apache2/conf.d/mcrypt.ini和/ etc / php5 / cli /中的/etc/php5/conf.d/mcrypt.ini文件中创建一个符号链接conf.d / mcrypt.ini
答案 13 :(得分:13)
您需要一体化的环境。您可以使用MAMP或XAMPP或任何其他工具。安装其中一个工具后,您需要编辑(创建).bash_profile(假设您使用bash)。
甚至简单而专业的你可以使用Laravel Homestead。
以下是官方文档的链接:http://laravel.com/docs/5.0/homestead
Jeffrey还有一个关于它的免费教程: https://laracasts.com/series/laravel-5-fundamentals/episodes/2
我建议您使用宅基地,因为您将预先安装以下所有工具。
答案 14 :(得分:10)
扩展@JetLaggy:
一次又一次地尝试使用MAMP目录修改.bash_profile后,我更改了MAMP php目录的文件权限,并且能够获得'哪个php'来显示正确的目录。麻烦的是其他功能不起作用,例如'php -v'。
所以我更新了MAMP。 http://documentation.mamp.info/en/mamp/installation/updating-mamp
这对我的特定设置起了作用。我不得不调整我的PATH来反映PHP的更新版本,但是一旦我做了,一切都运行了!
答案 15 :(得分:9)
在终端中输入命令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版本。
如果您使用的是这两个软件包管理器之一的PHP,请确保您的path
包含/usr/local/bin/
(自制软件包)或/opt/local/bin
(MacPorts)。
您可以使用MacPorts通过以下命令找到PHP的确切位置:
port contents php70 | grep bin/php
请注意,您应该将php70
替换为已安装的PHP版本。
Homebrew-php(https://github.com/Homebrew/homebrew-php)是一个具有各种不同版本PHP的点击。
您可以使用Homebrew通过以下命令找到PHP的确切位置:
brew --prefix homebrew/php/php56
请注意,您应该将php56
替换为已安装的PHP版本。
答案 16 :(得分:6)
在Ubuntu 14.04中
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
Ubuntu 16.04
sudo apt-get install php-mcrypt
sudo phpenmod mcrypt
Ubuntu 18.04
sudo apt install php7.0-mcrypt
sudo phpenmod mcrypt
或
sudo apt install php7.2-mcrypt
sudo phpenmod mcrypt
答案 17 :(得分:5)
如果您使用的是Z Shell,请执行以下操作:
nano ~/.zshrc
export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
source ~/.zshrc
which php
- 您应该获得MAMP 5.6.10路径5.6.10是您在MAMP中设置的PHP版本。
答案 18 :(得分:3)
$ brew install mcrypt php70-mcrypt
我正在运行PHP 7.0.x,因此如果您使用的是其他版本,请将“php70”更改为您的版本
如其他答案中所述,您可以使用$ php -v
查看您的php版本。
答案 19 :(得分:3)
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
答案 20 :(得分:0)
sudo php安装mcrypt
sudo php5enmod mcrypt
答案 21 :(得分:0)
在ubuntu 14.04中,根据您的php版本:5.6,7.0,7.1,7.2,7.3
sudo apt-get install php {version} -mcrypt
sudo apt-get install php7.1-mcrypt
sudo phpenmod mcrypt