2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Yii2 高级版本使用命令 php init 初始化项目之后会提供类似 main.php 和 main-local.php 来区分本地和 线上的开发环境变量配置。

但是基础版没有提供此功能,那么下面我们来使用 phpdotenv 来实现此功能。

配置

第一步先安装

$ composer require vlucas/phpdotenv

然后添加 env.php 文件,可以放在根目录下

<?php
/*** Setup application environment*/
$dotenv = new \Dotenv\Dotenv(dirname(__DIR__));
$dotenv->load();defined('YII_DEBUG') or define('YII_DEBUG', getenv('YII_DEBUG') === 'true');
defined('YII_ENV') or define('YII_ENV', getenv('YII_ENV') ?: 'prod');

修改项目入口文件 /web/index.php ,修改之后的文件如下:

<?phprequire(__DIR__ . '/../vendor/autoload.php');// Environment
require(__DIR__ . '/../env.php');require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');$config = require(__DIR__ . '/../config/web.php');
is_file($file = __DIR__ . '/../config/web-local.php') and $config = array_merge($config, require $file);
(new yii\web\Application($config))->run();

修改项目根目录下 yii 文件,修改之后的文件如下:

#!/usr/bin/env php
<?php
/*** Yii console bootstrap file.** [@link](/member/link) http://www.yiiframework.com/* @copyright Copyright (c) 2008 Yii Software LLC* @license http://www.yiiframework.com/license/*/require(__DIR__ . '/vendor/autoload.php');// Environment
require(__DIR__ . '/common/env.php');require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');$config =require(__DIR__ . '/config/console.php');$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);

在项目根目录下新建一个文件 .env.dist,里面就是环境配置信息,示例如下:

# Framework
# ---------
YII_DEBUG   = true
YII_ENV     = dev# Databases
# ---------
DB_DSN           = mysql:host=localhost;port=3306;dbname=yii2
DB_USERNAME      = root
DB_PASSWORD      = root
DB_TABLE_PREFIX  = t_ADMIN_EMAIL    = admin@gmail.com
ROBOT_EMAIL    = robot@gmail.com

最后记得把.env文件在 git 中设置成忽略,在 .gitignore 文件中添加下面代码:

# Env
/.env

使用

复制环境变量配置文件

cp env.dist .env

修改 .env 文件配置信息

然后就可以用 getenv() 调用了,示例如下:

'db'=>['class'=>'yii\db\Connection','dsn' => getenv('DB_DSN'),'username' => getenv('DB_USERNAME'),'password' => getenv('DB_PASSWORD'),'tablePrefix' => getenv('DB_TABLE_PREFIX'),'charset' => 'utf8','enableSchemaCache' => YII_ENV_PROD,
],

参考项目:https://github.com/trntv/yii2-starter-kit

2 个赞 踩 感谢 关注 收藏

共收到 6 条回复Yii2配置

jason571•#1•10个月前 0 个赞

这个项目我也看了,在琢磨怎么添加上rbac权限控制的UI界面,可以像adminLTE那样用界面管理角色和权限 有好方法推荐吗 @echo @forecho

forecho•#2•10个月前 0 个赞

@jason571 #1楼 你可以试一下这个 https://github.com/yiier/yii2-rbac

jason571•#3•10个月前 0 个赞

试了一下你说的yiier-rbac,竟然连安装都失败了。。@forecho

[user@host advanced]$ php yii migrate --migrationPath=@yii/rbac/migrations/
Exception 'yii\base\UnknownPropertyException' with message 'Getting unknown property: yii\console\ErrorHandler::errorAction'in /var/www/html/advanced/vendor/yiisoft/yii2/base/Component.php:143Stack trace:
#0 /var/www/html/advanced/vendor/yiier/yii2-rbac/src/components/AccessControl.php(78): yii\base\Component->__get('errorAction')
#1 /var/www/html/advanced/vendor/yiisoft/yii2/base/ActionFilter.php(67): yiier\rbac\components\AccessControl->isActive(Object(yii\base\InlineAction))
#2 [internal function]: yii\base\ActionFilter->beforeFilter(Object(yii\base\ActionEvent))
#3 /var/www/html/advanced/vendor/yiisoft/yii2/base/Component.php(541): call_user_func(Array, Object(yii\base\ActionEvent))
#4 /var/www/html/advanced/vendor/yiisoft/yii2/base/Module.php(607): yii\base\Component->trigger('beforeAction', Object(yii\base\ActionEvent))
#5 /var/www/html/advanced/vendor/yiisoft/yii2/base/Controller.php(139): yii\base\Module->beforeAction(Object(yii\base\InlineAction))
#6 /var/www/html/advanced/vendor/yiisoft/yii2/console/Controller.php(91): yii\base\Controller->runAction('', Array)
#7 /var/www/html/advanced/vendor/yiisoft/yii2/base/Module.php(455): yii\console\Controller->runAction('', Array)
#8 /var/www/html/advanced/vendor/yiisoft/yii2/console/Application.php(167): yii\base\Module->runAction('migrate', Array)
#9 /var/www/html/advanced/vendor/yiisoft/yii2/console/Application.php(143): yii\console\Application->runAction('migrate', Array)
#10 /var/www/html/advanced/vendor/yiisoft/yii2/base/Application.php(375): yii\console\Application->handleRequest(Object(yii\console\Request))
#11 /var/www/html/advanced/yii(27): yii\base\Application->run()
#12 {main}

jason571•#4•10个月前 1 个赞

要先把配置中的as access注释掉才能yii migrate,建议在github项目的说明文档中做一个备注吧

[user@host advanced]$ cat common/config/main.php
<?php
return ['vendorPath' => dirname(dirname(__DIR__)) . '/vendor','language' => 'zh-CN','components' => ['cache' => ['class' => 'yii\caching\FileCache',],'authManager' => ['class' => 'yii\rbac\DbManager',],],'modules' => ['rbac' => ['class' => 'yiier\rbac\Module',// 'allowNamespaces' => [//    'yiier\rbac\controllers',//    'api\controllers',//    'api\modules\user\controllers',// ],// 'menus' => [//    'users' => 'User'// ],// 'userClassName' => 'app\models\User',// 'idField' => 'id',// 'usernameField' => 'shop_name',],],
/*'as access' => ['class' => 'yiier\rbac\components\AccessControl',],
*/
];

@forecho

jason571•#5•10个月前 0 个赞

@forecho 我现在仅仅搭了个Yii2 Advanced模板app目录为advanced,要体验yii2-rbac的话,请问文档中提到的下面这段代码应该放到哪个文件中合适? 我尝试放到/var/www/html/advanced/backend/views/layouts/main.php中,发现没什么效果

也不知道通过哪个URL才能访问到yii2-rbac对应的功能,谢谢。

use menuecho  Menu::widget(['options' => ['class' => 'sidebar-menu'],'items' => [['label' => Yii::t('app', 'Dashboard'),'url' => Yii::$app->homeUrl,'icon' => 'fa-dashboard','active' => Yii::$app->request->url === Yii::$app->homeUrl],\Yii::$app->getModule('rbac')->getInstance()->getItems() // add menu]]
);

forecho•#6•10个月前 0 个赞

@jason571 #5楼 use menu 是说使用菜单。部分代码可以参照这个 https://github.com/iiYii/yii2-adminlte/blob/master/backend/views/layouts/main.php#L30

转载于:https://my.oschina.net/u/2552765/blog/789577

Yii2 使用 .env 来配置项目环境变量相关推荐

  1. yii2 php init,Yii2 使用 .env 来配置项目环境变量

    Yii2 高级版本使用命令 php init 初始化项目之后会提供类似 main.php 和 main-local.php 来区分本地和 线上的开发环境变量配置. 但是基础版没有提供此功能,那么下面我 ...

  2. 详解.env文件配置---全局环境变量

    一. .env 文件说明 .env --- 全局默认配置文件,在所有的环境中被载入,当你指定了环境,它也会合并,并且优先级大于.env,没有指定环境时先找它 .env.development --- ...

  3. vue项目使用.env文件配置全局环境变量

    关于文件名:必须以如下方式命名,不要乱起名,也无需专门手动控制加载哪个文件 .env 全局默认配置文件,不论什么环境都会加载合并 .env.development 开发环境下的配置文件 .env.pr ...

  4. java配置mq环境变量_RocketMQ学习-01安装及环境配置

    安装jdk环境 yum install java-1.8.0-openjdk java -version which java 输出 /usr/bin/java #软连接 ls -l /usr/bin ...

  5. java环境变量设置优化_Mac/windows配置jdk环境变量-seo优化只选拉一八科技

    Mac/windows配置jdk环境变量 Mac配置jdk环境变量 直接双击dmg文件,然后单击[下一步]完成安装.请忽略[配置jdk环境变量]直接跳转到[检查jdk是否安装成功]. Windows配 ...

  6. MAC安装配置maven环境变量

    1.下载maven包: 下载链接:?http://maven.apache.org/download.cgi maven下载文件释义: 1⃣️ Binary tar.gz archive:是装在Lin ...

  7. 30秒您学会配置TomCat环境变量,并运行无错

    1.问题 配置Apatch Tomcat过程报错: The CATALINA_HOME environment variable is not defined correctly.This envir ...

  8. [知了堂学习笔记]_牵线Eclipse和Tomcat第一篇 —— 配置Java环境变量安装eclipse

    一.先给他们提供一个"浪漫的"环境,比如传说中的"鹊桥"--java环境变量.哈哈! 配置java环境变量. 下载jdk,根据自己电脑的版本和操作位数选择不同的 ...

  9. 电脑配置jdk环境变量_苹果电脑配置环境变量

    1.右击我的电脑图标(windows10中为"此电脑"),选择"属性",打开"系统"对话框,点击"高级系统设置"标签.2 ...

最新文章

  1. 曾大战LeCun的谷歌女性科学家,刚刚被Jeff Dean开除了!
  2. vim 环境变量 encoding、fileencoding、fileencodings 的作用
  3. ajax实现多级联动菜单,jquery 实现二级/三级/多级联动菜单的思路及代码
  4. mfc ribbon动态修改字符_如何動態更改CMFCRibbonLabel的文本
  5. 什么是事务的传播特性?(转载)
  6. Linux下命令积累
  7. 100个最受欢迎的机器学习课程视频
  8. 测试es from size error,from + size must be less than or equal to: [10000]异常问题
  9. Visio Premium 2010密钥+破解激活方法
  10. 【建议收藏】 11个适合程序员逛的在线社区
  11. git命令之配置diff3冲突合并方式及KDiff3工具
  12. Android 撕开衣服解析
  13. 30天自制操作系统:第五天 结构体、文字显示与 GDT/IDT初始化
  14. C语言知识-零零散散(四)
  15. 字符串函数---atof()函数详解及实现(完整版)
  16. 十六进制转换浮点型时大小端问题
  17. 国产化之银河麒麟.netcore3.1访问https服务的两个问题
  18. android修改输出分辨率,编译Android8.1修改默认分辨率和屏幕密度
  19. 【仿写酷界面】【HenCoder】仿小米运动的运动记录界面
  20. House Carpenter

热门文章

  1. hadoop2.7的目录结构
  2. Centos7——NFS(Network File System)服务
  3. 基于docker的php调用基于docker的mysql数据库的方法
  4. 论文解读——An Analysis of Scale Invariance in Object Detection – SNIP
  5. 双线性插值函数的形状
  6. php 7 xhprof,php7中使用xhprof解析
  7. python 多态 锁_python 上下文管理器,多态,数据锁定与自省,
  8. 多媒体实时交互系统主要由系统服务器,多媒体设备和多媒体交互系统专利_专利申请于2017-03-08_专利查询 - 天眼查...
  9. 用感知器对样本分类的matlab程序_新的基础算法:树突网络:一个用于分类、回归和系统识别的白箱模块...
  10. 病毒传播数学建模matlab分析,数学建模MATLAB之分析法(一)