我正在尝试migrate
在 OSX 上使用 Laravel 4 中的功能。但是,我收到以下错误:
Laravel requires the Mcrypt PHP extension.
据我了解,它已经启用(见下图)。
出了什么问题,我该如何解决?
你有安装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。
它现在应该可以工作了。
启用 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 版本上,您需要在安装后启用该模块。你可以用php5enmod
.
sudo php5enmod mcrypt
sudo service apache2 restart
笔记
- PHP 7.1 弃用了 mcrypt 并且 7.2完全删除了 mcrypt 扩展
- Laravel 5.1 及更高版本不再需要 mcrypt
To those that uses XAMPP 1.7.3 and Mac
which php
/usr/bin/php
, then proceed to 3.sudo nano ~/.bash_profile
(or sudo vim ~/.bash_profile
if you know how to use it)export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
cd ~
. .bash_profile
which php
. If you did it right, it should be the same as the path in #4.The reason for the mcrypt error is because your Mac uses its native php, you need to change it to the one xampp has.
P.S. I'd recommend using MAMP for Laravel 4 for Mac users, this issue will get resolved along with the php file info error without a sweat, and the php version of xampp is so outdated.
对于 OSX 上的非 MAMP 或 XAMPP 用户(安装了 homebrew):
brew install homebrew/php/php56-mcrypt
干杯!
使用 Ubuntu,只需
sudo php5enmod mcrypt
为我做了伎俩。您无需重新启动 Apache,因为您只需从 CLI 使用 PHP。
在 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
让 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缓存,一切正常
或者,使用:
sudo apt-get install php5-mcrypt
不确定这是否适用于标准 PHP 安装 - 我php 5.5.7
使用以下软件包安装:
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
对于 ubuntu,如果其他人不工作,请尝试以下步骤:
cd ~
sudo apt-get remove php5-mcrypt
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
sudo service apache2 restart
希望这会有所帮助。谢谢 !
对于 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
我的操作系统是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
只为yumers,
yum install php-mcrypt
service httpd restart
chown -R apache:apache apppath
也许你需要安装remi repo
这在我的 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
您需要一个多合一的环境。您可以使用 MAMP 或 XAMPP 或任何其他工具。安装这些工具之一后,您需要编辑(创建)您的 .bash_profile(假设您使用 bash)。
甚至更简单、更专业的你可以使用 Laravel Homestead。
这是官方文档的链接:http: //laravel.com/docs/5.0/homestead
Jeffrey 也有关于它的免费教程: https ://laracasts.com/series/laravel-5-fundamentals/episodes/2
我建议您使用宅基地,因为您将预先安装以下所有工具。
扩展@JetLaggy:
在一次又一次地尝试使用 MAMP 目录修改 .bash_profile 之后,我更改了 MAMP php 目录的文件权限,并且能够获得“which 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
确保将 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/
(Homebrew) 或(MacPorts)。/opt/local/bin
您可以使用 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
在 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
如果您使用的是 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 版本。
$ brew install mcrypt php70-mcrypt
我正在运行 PHP 7.0.x,所以如果您使用不同的版本,请将“php70”更改为您的版本。
如其他答案所述,您可以使用$ php -v
.
在 ubuntu 14.04 中基于您的 php 版本:5.6,7.0,7.1,7.2,7.3
sudo apt-get install php{版本}-mcrypt
sudo apt-get install php7.1-mcrypt
sudo phpenmod mcrypt
须藤 php 安装 mcrypt
sudo php5enmod mcrypt