我正在尝试migrate
在Laravel 4
上使用该功能OSX
。但是,我收到以下错误:
Laravel requires the Mcrypt PHP extension.
据我了解,该功能已经启用(请参见下图)。
有什么问题,我该如何解决?
我正在尝试migrate
在Laravel 4
上使用该功能OSX
。但是,我收到以下错误:
Laravel requires the Mcrypt PHP extension.
据我了解,该功能已经启用(请参见下图)。
有什么问题,我该如何解决?
Answers:
启用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已完全删除了mcrypt扩展
- Laravel 5.1及更高版本消除了对mcrypt的需求
sudo apt-get install php5-mcrypt
,实际上并没有完全安装扩展。
您安装了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。
现在应该可以正常工作了。
export PATH=/Applications/AMPPS/php-5.4/bin:$PATH
...假设您要拍摄5.4.xx,那里还有5.3和5.5。
cd ~
非常重要,您必须打开.bash_profile
那里存在的那个,同样重要的是您必须关闭终端并重新打开以便加载新的bash变量。只要确保运行哪个php来验证您的更改已应用,编码愉快!
对于使用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拥有的一个。
PS我建议为Mac用户使用Laravel 4的MAMP,这个问题将与php文件信息错误一起得到解决,并且xampp的php版本已经过时了。
"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
export PATH="/opt/lampp/bin:$PATH"
对于OSX上的非MAMP或XAMPP用户(安装了自制软件):
brew install homebrew/php/php56-mcrypt
干杯!
$ brew install homebrew/php/php55-mcrypt
,否则得到了Error: No available formula with the name "php55-mcrypt"
在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
sudo aptitude -y install php5-mcrypt
,其次是sudo php5enmod mcrypt
和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的动态编译扩展部分下添加以下行
extension=mcrypt.so
重新启动apache服务器,清除laravel缓存,一切正常
docker-php-ext-install mcrypt
。在图片上测试过:php:5.6.31-apache
。没有那个,php -m
就不会显示mcrypt
。
对于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
对于ubuntu,如果其他方法不起作用,请尝试以下步骤:
cd ~
sudo apt-get remove php5-mcrypt
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
sudo service apache2 restart
希望会有所帮助。谢谢 !
我的操作系统是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
这在我的Linux Mint本地环境/ubuntu/350942/cannot-get-mcrypt-for-php5上为我解决了
我需要在以下文件夹/etc/php5/apache2/conf.d/mcrypt.ini和/etc/php5/cli/conf.d中的/etc/php5/conf.d/mcrypt.ini文件中建立符号链接。 /mcrypt.ini
您需要一个一体化的环境。您可以使用MAMP或XAMPP或任何其他工具。安装这些工具之一后,您将需要编辑(创建).bash_profile(假设您使用bash)。
甚至更简单,更专业,您都可以使用Laravel Homestead。
这是官方文档的链接:http : //laravel.com/docs/5.0/homestead
Jeffrey对此也有一个免费的教程:https : //laracasts.com/series/laravel-5-fundamentals/episodes/2
我建议您使用Homestead,因为您将预安装以下所有工具。
在@JetLaggy上扩展:
在尝试用MAMP目录修改.bash_profile之后,我更改了MAMP php目录的文件许可权,并且能够获取“哪个php”以显示正确的目录。问题是其他功能不起作用,例如“ php -v”。
所以我更新了MAMP。 http://documentation.mamp.info/en/mamp/installation/updating-mamp
这为我的特定设置提供了窍门。我必须调整PATH以反映PHP的更新版本,但是一旦完成,一切都会正常!
输入命令 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
确保使用在MAMP中选择的PHP版本替换php5.6.7。
保存文件后,请确保关闭并关闭终端,然后再次打开。一旦完成,您将使用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/
(Homebrew)或/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版本。
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
在基于您的PHP版本的Ubuntu 14.04中:5.6,7.0,7.1,7.2,7.3
须藤apt-get install php {version} -mcrypt
sudo apt-get install php7.1-mcrypt
sudo phpenmod mcrypt