我试图在OSX上使用Laravel 4中的迁移函数。然而,我得到以下错误:
Laravel requires the Mcrypt PHP extension.
据我所知,它已经启用了(见下图)。
出了什么问题,我该如何解决?
我试图在OSX上使用Laravel 4中的迁移函数。然而,我得到以下错误:
Laravel requires the Mcrypt PHP extension.
据我所知,它已经启用了(见下图)。
出了什么问题,我该如何解决?
当前回答
你安装了MAMP吗?
在终端中使用哪个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版本替换。
然后重新启动终端,查看您现在使用的是哪个PHP。
现在应该可以工作了。
其他回答
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
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
笔记 PHP 7.1弃用了mcrypt, 7.2完全删除了mcrypt扩展 Laravel 5.1和后来的版本不再需要mcrypt
对于OSX上的非MAMP或XAMPP用户(已安装自制程序):
brew install homebrew/php/php56-mcrypt
干杯!
只是为了美味,
yum install php-mcrypt
service httpd restart
chown -R apache:apache apppath
也许你需要安装remi repo
我的OS是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)
下一个步骤:
重命名或删除php55 ini文件 创建符号链接 重启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
然后你可以检查你的php模块通过:
php -m
或者,使用:
sudo apt-get install php5-mcrypt
不确定这是否适用于标准的PHP安装-我使用包安装了PHP 5.5.7:
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update