我正在尝试在 OSX 上的 Laravel 4 中使用 migrate
函数。但是,我收到以下错误:
Laravel requires the Mcrypt PHP extension.
据我了解,它已经启用(见下图)。
出了什么问题,我该如何解决?
https://i.stack.imgur.com/ezq8a.png
你有安装 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
在早期版本的 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 的需要
sudo apt-get install php5-mcrypt
实际上并没有完全安装扩展。
对于使用 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" Ctrl+O 然后回车保存,然后 Ctrl+X 退出。键入 cd ~ 类型。 .bash_profile 重启终端。输入哪个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 用户(安装了 homebrew):
brew install homebrew/php/php56-mcrypt
干杯!
$ brew install homebrew/php/php55-mcrypt
,否则得到 Error: No available formula with the name "php55-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
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
这将在 /etc/php5/mods-available/
中创建 mcrypt.ini
文件
然后
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
希望这会有所帮助。谢谢 !
或者,使用:
sudo apt-get install php5-mcrypt
不确定这是否适用于标准 PHP 安装 - 我使用以下软件包安装了 php 5.5.7
:
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
我的操作系统是 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
只为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
我建议您使用宅基地,因为您将预先安装以下所有工具。
Ubuntu 14.04
PHP 5.6
HHVM
Nginx
MySQL
Postgres
节点(使用 Bower、Grunt 和 Gulp)
雷迪斯
内存缓存
豆茎
Laravel 特使
Fabric + HipChat 扩展
扩展@JetLaggy:
在一次又一次地尝试使用 MAMP 目录修改 .bash_profile 之后,我更改了 MAMP php 目录的文件权限,并且能够获得“which php”来显示正确的目录。问题是其他功能不起作用,例如'php -v'。
所以我更新了 MAMP。 http://documentation.mamp.info/en/mamp/installation/updating-mamp
这对我的特定设置起到了作用。我不得不调整我的 PATH 以反映 PHP 的更新版本,但是一旦我这样做了,一切正常!
在 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 版本。
使用 Homebrew/MacPorts
如果您使用的是随这两个包管理器中的任何一个一起提供的 PHP,请确保您的 path
包含 /usr/local/bin/
(Homebrew) 或 /opt/local/bin
(MacPorts)。
使用 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
请注意,您应该将 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,只需执行以下操作:
打开终端 sudo nano ~/.zshrc 粘贴这个; export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH Save Run source ~/.zshrc Run which php - 你应该得到 MAMP 5.6.10 路径
5.6.10 是您在 MAMP 中设置的 PHP 版本。
OSX 与 brew
$ brew install mcrypt php70-mcrypt
我正在运行 PHP 7.0.x,因此如果您使用不同的版本,请将“php70”更改为您的版本。
如其他答案中所述,您可以使用 $ php -v
查看您的 php 版本。
sudo php 安装 mcrypt sudo php5enmod mcrypt
mcrypt
,您能否详细说明为什么您认为这会解决 OP 的问题?
在 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
不定期副业成功案例分享
export PATH=/Applications/AMPPS/php-5.4/bin:$PATH
...假设您正在为 5.4.xx 拍摄,那么其中还有 5.3 和 5.5。cd ~
非常重要,您必须打开那里存在的.bash_profile
,另外重要的是您必须关闭终端并重新打开,以便加载新的 bash 变量。只需确保运行哪个 php 来验证您的更改是否已应用,快乐的编码!