我想在 OSX Laravel 4 上使用 migrate 函数 . 但是,我收到以下错误:
OSX
Laravel 4
migrate
Laravel requires the Mcrypt PHP extension.
据我了解,它已经启用(见下图) .
有什么问题,我该如何解决?
Laravel does not need mcrypt extension anymore . mcrypt 已过时,libmcrypt的最后一次更新是在2007年.Laravel 4.2也已过时且没有更多支持 . 最好的(=安全的)解决方案是更新到Laravel> 5.1(在Laravel 5.2之前没有LTS) .
mcrypt
Mcrypt于2015年6月从Laravel被移除:https://github.com/laravel/framework/pull/9041
这在我的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
在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
More detail
您需要一个多合一的环境 . 您可以使用MAMP或XAMPP或任何其他工具 . 安装其中一个工具后,您需要编辑(创建).bash_profile(假设您使用bash) .
或者甚至简单和专业,你可以使用Laravel Homestead .
这是官方文档的链接:http://laravel.com/docs/5.0/homestead
杰弗里还有一个关于它的免费教程:https://laracasts.com/series/laravel-5-fundamentals/episodes/2
我建议你去家园,因为你将预先安装以下所有工具 .
Ubuntu 14.04
PHP 5.6
HHVM
Nginx
MySQL
Postgres
节点(有Bower,Grunt和Gulp)
Redis
Memcached
Beanstalkd
Laravel特使
Fabric HipChat扩展
在Ubuntu 14.04
sudo apt-get install php5-mcrypt sudo php5enmod mcrypt
Ubuntu 16.04
sudo apt-get install php-mcrypt sudo phpenmod mcrypt
或者,使用:
不确定这是否适用于标准PHP安装 - 我使用以下软件包安装了 php 5.5.7 :
php 5.5.7
sudo add-apt-repository ppa:ondrej/php5 sudo apt-get update
对于ubuntu,如果其他人不工作,请尝试以下步骤:
cd ~
sudo apt-get remove php5-mcrypt
sudo service apache2 restart
希望会有所帮助 . 谢谢 !
启用Web的扩展和启用命令行的扩展可能不同 . 在终端中运行 php -m 并检查是否列出了 mcrypt . 如果不是,则通过从终端运行 php --ini 来检查命令行在哪里加载 php.ini 文件 .
php -m
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 中 . 你需要对它进行符号链接 .
mods-available
在所有Ubuntu版本上安装了'll need to enable the mod once it' . 你可以用 php5enmod 做到这一点 .
php5enmod
sudo php5enmod mcrypt sudo service apache2 restart
注意PHP 7.1弃用的mcrypt和7.2已完全删除了mcrypt扩展Laravel 5.1以后删除了对mcrypt的需求
对于Ubuntu 14.04上的php-fpm安装,以下内容对我有用:
这将在 /etc/php5/mods-available/ 内创建 mcrypt.ini 文件
/etc/php5/mods-available/
mcrypt.ini
然后
将创建一个符号链接: /etc/php5/fpm/conf.d/
/etc/php5/fpm/conf.d/
只需重启php-fpm服务 sudo service php5-fpm restart
对于OSX上的非MAMP或XAMPP用户(安装了自制软件):
brew install homebrew/php/php56-mcrypt
干杯!
扩展@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变量 .
which php
首先,你应该使用命令“cd / Applications / MAMP / bin / php”来检查来自MAMP的哪个php版本并注意版本(例如,php5.6.7) .
一旦知道了版本,就应该编辑 ~/.bash_profile 文件(即主目录中的 .bash_profile )并添加导出行:
~/.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版本 .
如果您使用的是这两种方法中的任何一种,请确保 path 包含 /usr/local/bin/ (Homebrew)或 /opt/local/bin (MacPorts)包管理员 .
path
/usr/local/bin/
/opt/local/bin
您可以使用以下命令使用MacPorts找到PHP的确切位置:
port contents php70 | grep bin/php
请注意,您应该将 php70 替换为已安装的PHP版本 .
php70
Homebrew-php(https://github.com/Homebrew/homebrew-php)是一个具有各种不同版本的PHP的水龙头 .
您可以使用Homebrew使用以下命令找到PHP的确切位置:
brew --prefix homebrew/php/php56
请注意,您应该将 php56 替换为已安装的PHP版本 .
php56
在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
仅限于yumers,
yum install php-mcrypt service httpd restart chown -R apache:apache apppath
也许你需要安装remi repo
sudo php install mcrypt sudo php5enmod mcrypt
使用Ubuntu,只是
为我做了诀窍 . 您不需要重新启动Apache,因为您只需要从CLI使用PHP .
Getting Laravel working on Apache
PHP版本:PHP 5.5.9
Ubuntu版本:14.04
我在窗户上有一个工作的laravel项目 . 当我将它复制到ubuntu服务器时,我开始收到mcrypt错误 . 经过大量的试验和错误后,这个
getting artisan command working
(如果在使用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
fixing the browser error
(如果在访问本地laravel索引页时在浏览器中出现mcrypt错误)
sudo nano /etc/php5/apache2/php.ini
在php ini的动态编译扩展部分下添加以下行
extension=mcrypt.so
重启apache服务器,清除laravel缓存,一切正常
我的操作系统是 Yosemite .
Yosemite
我通过查找配置路径来解决此问题:
输出示例:
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模块:
对于那些使用XAMPP 1.7.3和Mac的人
转到终端
输入 which php
如果是 /usr/bin/php ,则继续执行3 .
/usr/bin/php
输入 sudo nano ~/.bash_profile (或 sudo vim ~/.bash_profile ,如果您知道如何使用它)
sudo nano ~/.bash_profile
sudo vim ~/.bash_profile
然后粘贴 export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
Ctrl O然后输入以保存,然后按Ctrl X退出 .
类型 cd ~
类型 . .bash_profile
. .bash_profile
重启终端 .
输入 which php . 如果你做得对,它应该与#4中的路径相同 .
mcrypt错误的原因是因为你的Mac使用它的原生php,你需要将它改为xampp所拥有的 .
附:我建议为Mac用户使用MAMP for Laravel 4,这个问题会随着php文件信息错误而解决,而且xampp的php版本已经过时了 .
你有 MAMP 安装?
在终端中使用 which php 查看您正在使用的PHP版本 .
如果它不是来自MAMP的PHP版本,您应该在用户的主目录中编辑或添加 .bash_profile ,即: cd ~
在 .bash_profile 中,添加以下行:
export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH
Edited: 首先,您应该使用命令 cd /Applications/MAMP/bin/php 来检查您正在使用的MAMP中的哪个PHP版本,然后替换为上面的PHP版本 .
cd /Applications/MAMP/bin/php
然后 restart 终端查看您现在使用的是哪个PHP .
restart
它现在应该工作了 .
$ brew install mcrypt php70-mcrypt
我正在运行PHP 7.0.x,因此如果您使用的是其他版本,请将"php70"更改为您的版本 .如其他答案中所述,您可以使用 $ php -v 查看您的php版本 .
$ php -v
如果您使用的是Z Shell,请执行以下操作:
打开终端
sudo nano ~/.zshrc
nano ~/.zshrc
粘贴这个; export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
Save
Run source ~/.zshrc
source ~/.zshrc
Run which php - 你应该得到MAMP 5.6.10路径
5.6.10是您在MAMP中设置的PHP版本 .
22 回答
对于今天仍然来到这里的人:
Laravel does not need mcrypt extension anymore .
mcrypt
已过时,libmcrypt的最后一次更新是在2007年.Laravel 4.2也已过时且没有更多支持 . 最好的(=安全的)解决方案是更新到Laravel> 5.1(在Laravel 5.2之前没有LTS) .Mcrypt于2015年6月从Laravel被移除:https://github.com/laravel/framework/pull/9041
这在我的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
在Ubuntu(PHP-FPM,Nginx)
安装php5-mcrypt之后
你必须在mods-available中创建一个符号链接到ini文件:
启用:
重启php5-fpm:
More detail
您需要一个多合一的环境 . 您可以使用MAMP或XAMPP或任何其他工具 . 安装其中一个工具后,您需要编辑(创建).bash_profile(假设您使用bash) .
或者甚至简单和专业,你可以使用Laravel Homestead .
这是官方文档的链接:http://laravel.com/docs/5.0/homestead
杰弗里还有一个关于它的免费教程:https://laracasts.com/series/laravel-5-fundamentals/episodes/2
我建议你去家园,因为你将预先安装以下所有工具 .
Ubuntu 14.04
PHP 5.6
HHVM
Nginx
MySQL
Postgres
节点(有Bower,Grunt和Gulp)
Redis
Memcached
Beanstalkd
Laravel特使
Fabric HipChat扩展
在Ubuntu 14.04
Ubuntu 16.04
或者,使用:
不确定这是否适用于标准PHP安装 - 我使用以下软件包安装了
php 5.5.7
:对于ubuntu,如果其他人不工作,请尝试以下步骤:
cd ~
sudo apt-get remove php5-mcrypt
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
sudo service apache2 restart
希望会有所帮助 . 谢谢 !
启用Web的扩展和启用命令行的扩展可能不同 . 在终端中运行
php -m
并检查是否列出了mcrypt
. 如果不是,则通过从终端运行php --ini
来检查命令行在哪里加载php.ini
文件 .在此
php.ini
文件中,您可以启用扩展程序 .OSX
我听说OSX上的人因为终端指向OSX附带的本机PHP而遇到问题 . 您应该更新您的bash配置文件以包含PHP的实际路径 . 像这样的东西(我实际上并没有使用OSX,所以这可能不是100%):
Ubuntu
在早期版本的Ubuntu(14.04之前)运行
sudo apt-get install php5-mcrypt
时,它实际上并没有将扩展安装到mods-available
中 . 你需要对它进行符号链接 .在所有Ubuntu版本上安装了'll need to enable the mod once it' . 你可以用
php5enmod
做到这一点 .对于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
对于OSX上的非MAMP或XAMPP用户(安装了自制软件):
brew install homebrew/php/php56-mcrypt
干杯!
扩展@JetLaggy:
在一次又一次地尝试使用MAMP目录修改.bash_profile后,我更改了MAMP php目录的文件权限,并且能够获得“哪个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
)并添加导出行:确保将php5.6.7替换为您在MAMP中选择的PHP版本 .
文件保存后,请确保关闭终端并再次打开 . 完成后,您将使用MAMP附带的PHP .
一个很容易找到你需要放入
.bash_profile
的行的方法是在终端内运行以下命令:将这三行复制并粘贴到终端中将正确输出在MAMP控制面板中选择的PHP版本 .
使用Homebrew / MacPorts
如果您使用的是这两种方法中的任何一种,请确保
path
包含/usr/local/bin/
(Homebrew)或/opt/local/bin
(MacPorts)包管理员 .使用MacPorts检查PHP路径
您可以使用以下命令使用MacPorts找到PHP的确切位置:
请注意,您应该将
php70
替换为已安装的PHP版本 .使用Homebrew-php检查PHP路径
Homebrew-php(https://github.com/Homebrew/homebrew-php)是一个具有各种不同版本的PHP的水龙头 .
您可以使用Homebrew使用以下命令找到PHP的确切位置:
请注意,您应该将
php56
替换为已安装的PHP版本 .在ubuntu 14.04中基于你的版本php:5.6,7.0,7.1,7.2,7.3
仅限于yumers,
也许你需要安装remi repo
使用Ubuntu,只是
为我做了诀窍 . 您不需要重新启动Apache,因为您只需要从CLI使用PHP .
Getting Laravel working on Apache
PHP版本:PHP 5.5.9
Ubuntu版本:14.04
我在窗户上有一个工作的laravel项目 . 当我将它复制到ubuntu服务器时,我开始收到mcrypt错误 . 经过大量的试验和错误后,这个
getting artisan command working
(如果在使用artisan命令行工具时遇到mcrypt错误)
我做了很多试验和错误所以每次我运行php5enmod命令之前,我有错误消息 . 但在全新安装时没有错误消息 . 在这一步之后我得到了工匠指挥工作
fixing the browser error
(如果在访问本地laravel索引页时在浏览器中出现mcrypt错误)
在php ini的动态编译扩展部分下添加以下行
重启apache服务器,清除laravel缓存,一切正常
我的操作系统是
Yosemite
.我通过查找配置路径来解决此问题:
输出示例:
下一步:
重命名或删除php55 ini文件
创建符号链接
重启Apache服务器
命令:
然后你可以检查你的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"
Ctrl O然后输入以保存,然后按Ctrl X退出 .
类型
cd ~
类型
. .bash_profile
重启终端 .
输入
which php
. 如果你做得对,它应该与#4中的路径相同 .mcrypt错误的原因是因为你的Mac使用它的原生php,你需要将它改为xampp所拥有的 .
附:我建议为Mac用户使用MAMP for Laravel 4,这个问题会随着php文件信息错误而解决,而且xampp的php版本已经过时了 .
你有 MAMP 安装?
在终端中使用
which php
查看您正在使用的PHP版本 .如果它不是来自MAMP的PHP版本,您应该在用户的主目录中编辑或添加
.bash_profile
,即:cd ~
在
.bash_profile
中,添加以下行:Edited: 首先,您应该使用命令
cd /Applications/MAMP/bin/php
来检查您正在使用的MAMP中的哪个PHP版本,然后替换为上面的PHP版本 .然后
restart
终端查看您现在使用的是哪个PHP .它现在应该工作了 .
OSX与brew
我正在运行PHP 7.0.x,因此如果您使用的是其他版本,请将"php70"更改为您的版本 .
如其他答案中所述,您可以使用
$ php -v
查看您的php版本 .如果您使用的是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版本 .