我试图在OSX上使用Laravel 4中的迁移函数。然而,我得到以下错误:
Laravel requires the Mcrypt PHP extension.
据我所知,它已经启用了(见下图)。
出了什么问题,我该如何解决?
我试图在OSX上使用Laravel 4中的迁移函数。然而,我得到以下错误:
Laravel requires the Mcrypt PHP extension.
据我所知,它已经启用了(见下图)。
出了什么问题,我该如何解决?
当前回答
我的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
其他回答
在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
确保将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版本。
使用自制程序/ MacPorts
确保你的路径包含/usr/local/bin/ (Homebrew)或/opt/local/bin (MacPorts)(如果你使用的是这两个包管理器中的任何一个附带的PHP)。
使用MacPorts检查PHP路径
你可以使用MacPorts命令找到PHP的确切位置:
port contents php70 | grep bin/php
注意,您应该将php70替换为您已经安装的PHP版本。
使用Homebrew-php检查PHP路径
Homebrew-php (https://github.com/Homebrew/homebrew-php)是一个拥有各种不同版本的PHP的插件。
你可以在Homebrew中使用以下命令找到PHP的确切位置:
brew --prefix homebrew/php/php56
注意,您应该用已经安装的PHP版本替换php56。
对于今天仍然来到这里的人:
Laravel不再需要mcrypt扩展了。McRypt已经过时,libmcrypt的最后一次更新是在2007年。Laravel 4.2也过时了,没有更多的支持。最好(=安全)的解决方案是更新到Laravel 9。x+ (Laravel 8;X还是可以的。但如果你正在升级,那么就升级到最新版本)。
Mcrypt于2015年6月从Laravel删除:https://github.com/laravel/framework/pull/9041
让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
修复浏览器错误
(如果您在访问本地laravel索引页面时浏览器出现McRypt错误)
sudo nano /etc/php5/apache2/php.ini
在PHP ini的动态编译扩展部分中添加以下行
extension=mcrypt.so
重新启动apache服务器,清除laravel缓存和所有工作
你需要一个all in one环境。您可以使用MAMP或XAMPP或任何其他工具。在安装这些工具之一之后,您将需要编辑(创建). bash_profile(假设您使用bash)。
或者甚至简单和更专业的你可以使用Laravel Homestead。
这里是官方文档的链接:http://laravel.com/docs/5.0/homestead
杰弗里还有一个关于它的免费教程: https://laracasts.com/series/laravel-5-fundamentals/episodes/2
我建议您使用homestead,因为您将预先安装以下所有工具。
Ubuntu 14.04 PHP 5.6 HHVM Nginx MySQL Postgres 节点(带有低沉、咕哝和吞咽) 复述, Memcached Beanstalkd Laravel特使 面料+ HipChat扩展
如果你正在使用Z Shell,只需执行以下操作:
打开终端 Sudo nano ~/.zshrc 粘贴;导出路径= /应用程序/ MAMP / bin / php / php5.6.10 / bin:美元的道路 保存 执行source ~/.zshrc命令 运行该php -您应该得到MAMP 5.6.10路径
5.6.10是你在MAMP中设置的PHP版本。