Pat*_*eck 408 php mcrypt laravel laravel-4
我试图使用migrate功能Laravel 4上OSX.但是,我收到以下错误:
Laravel requires the Mcrypt PHP extension.
Run Code Online (Sandbox Code Playgroud)
据我了解,它已经启用(见下图).
有什么问题,我该如何解决?

Jus*_*nHo 337
你安装了MAMP吗?
which php在终端中使用以查看您正在使用的PHP版本.
如果它不是来自MAMP的PHP版本,则应编辑或添加.bash_profile用户的主目录,即:cd ~
在.bash_profile,添加以下行:
export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
编辑:首先你应该使用命令cd /Applications/MAMP/bin/php检查你正在使用的MAMP中的PHP版本,然后用上面的PHP版本替换.
然后restart终端看看你现在使用的是哪个PHP.
它现在应该工作了.
Jas*_*wis 271
启用Web的扩展和启用命令行的扩展可能不同.php -m在终端中运行并检查是否mcrypt列出.如果不是,则php.ini通过php --ini从终端运行来检查命令行加载文件的位置.
在此php.ini文件中,您可以启用扩展程序.
我听说OSX上的人因为终端指向OSX附带的本机PHP而遇到问题.您应该更新您的bash配置文件以包含PHP的实际路径.像这样的东西(我实际上并没有使用OSX,所以这可能不是100%):
export PATH=/usr/local/php5/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
在早期版本的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
Run Code Online (Sandbox Code Playgroud)
在所有Ubuntu版本中,您需要在安装后启用mod.你可以这样做php5enmod.
sudo php5enmod mcrypt
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
笔记
- PHP 7.1弃用的mcrypt和7.2已完全删除了mcrypt扩展
- Laravel 5.1及更高版本删除了对mcrypt的需求
Bry*_*n P 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_profilewhich php.如果你做得对,它应该与#4中的路径相同.mcrypt错误的原因是因为你的Mac使用它的原生php,你需要将它改为一个xampp.
PS我建议为Mac用户使用MAMP for Laravel 4,这个问题会随着php文件信息错误而解决,而且xampp的php版本已经过时了.
ooz*_*zal 87
对于OSX上的非MAMP或XAMPP用户(安装了自制软件):
brew install homebrew/php/php56-mcrypt
干杯!
mpp*_*les 46
使用Ubuntu,只是
sudo php5enmod mcrypt
Run Code Online (Sandbox Code Playgroud)
为我做了诀窍.您不需要重新启动Apache,因为您只需要从CLI使用PHP.
Nan*_*mar 37
在Ubuntu(PHP-FPM,Nginx)
sudo apt-get install php5-mcrypt
Run Code Online (Sandbox Code Playgroud)
安装php5-mcrypt之后
你必须在mods-available中创建一个符号链接到ini文件:
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini
Run Code Online (Sandbox Code Playgroud)
启用:
sudo php5enmod mcrypt
Run Code Online (Sandbox Code Playgroud)
重启php5-fpm:
sudo service php5-fpm restart
Run Code Online (Sandbox Code Playgroud)
Soj*_*ose 25
让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
Run Code Online (Sandbox Code Playgroud)
修复浏览器错误
(如果在访问本地laravel索引页时在浏览器中遇到mcrypt错误)
sudo nano /etc/php5/apache2/php.ini
Run Code Online (Sandbox Code Playgroud)
在php ini的动态编译扩展部分下添加以下行
extension=mcrypt.so
Run Code Online (Sandbox Code Playgroud)
重启apache服务器,清除laravel缓存,一切正常
Sag*_*dal 19
对于ubuntu,如果其他人不工作,请尝试以下步骤:
cd ~sudo apt-get remove php5-mcryptsudo apt-get install php5-mcryptsudo php5enmod mcryptsudo service apache2 restart希望有所帮助.谢谢 !
Pra*_*ary 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
Joe*_*dee 18
或者,使用:
sudo apt-get install php5-mcrypt
Run Code Online (Sandbox Code Playgroud)
不确定这是否适用于标准PHP安装 - 我php 5.5.7使用以下软件包安装:
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
d.d*_*lov 16
我的操作系统是Yosemite.
我通过查找配置路径来解决此问题:
php --ini
Run Code Online (Sandbox Code Playgroud)
示例输出:
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)
Run Code Online (Sandbox Code Playgroud)
下一步:
命令:
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
Run Code Online (Sandbox Code Playgroud)
然后你可以检查你的PHP模块:
php -m
Run Code Online (Sandbox Code Playgroud)
Sea*_*ean 16
仅限于yumers,
yum install php-mcrypt
service httpd restart
chown -R apache:apache apppath
Run Code Online (Sandbox Code Playgroud)
也许你需要安装remi repo
The*_*lis 15
这在我的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文件创建一个符号链接. /mcrypt.ini
mbu*_*enc 14
您需要一个多合一的环境.您可以使用MAMP或XAMPP或任何其他工具.安装其中一个工具后,您需要编辑(创建).bash_profile(假设您使用bash).
或者甚至简单和专业,你可以使用Laravel Homestead.
以下是官方文档的链接:http://laravel.com/docs/5.0/homestead
杰弗里也有一个免费的教程:https: //laracasts.com/series/laravel-5-fundamentals/episodes/2
我建议你去家园,因为你将预先安装以下所有工具.
aba*_*mer 10
扩展@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
Run Code Online (Sandbox Code Playgroud)
确保将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
Run Code Online (Sandbox Code Playgroud)
将这三行复制并粘贴到终端中将正确输出在MAMP控制面板中选择的PHP版本.
如果您使用的是这两个软件包管理器之一的PHP,请确保path包含/usr/local/bin/(Homebrew)或/opt/local/bin(MacPorts).
您可以使用MacPorts使用以下命令找到PHP的确切位置:
port contents php70 | grep bin/php
Run Code Online (Sandbox Code Playgroud)
请注意,您应该替换php70已安装的PHP版本.
Homebrew-php(https://github.com/Homebrew/homebrew-php)是一个具有各种不同版本的PHP的水龙头.
您可以使用Homebrew使用以下命令找到PHP的确切位置:
brew --prefix homebrew/php/php56
Run Code Online (Sandbox Code Playgroud)
请注意,您应该替换php56已安装的PHP版本.
在Ubuntu 14.04中
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
Run Code Online (Sandbox Code Playgroud)
Ubuntu 16.04
sudo apt-get install php-mcrypt
sudo phpenmod mcrypt
Run Code Online (Sandbox Code Playgroud)
Ubuntu 18.04
sudo apt install php7.0-mcrypt
sudo phpenmod mcrypt
Run Code Online (Sandbox Code Playgroud)
要么
sudo apt install php7.2-mcrypt
sudo phpenmod mcrypt
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您使用的是Z Shell,则只需执行以下操作:
nano ~/.zshrcexport PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATHsource ~/.zshrcwhich php -您应该获得MAMP 5.6.10路径5.6.10是您在MAMP中设置的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
| 归档时间: |
|
| 查看次数: |
250419 次 |
| 最近记录: |