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

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

配置

第一步先安装

$ composer require vlucas/phpdotenv

然后添加 env.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 ,修改之后的文件如下:

require(__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

/**

* 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,

],

共收到 6 条回复Yii2配置

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

试了一下你说的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:143

Stack 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}

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

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

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

use menu

echo 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

]

]

);

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

  1. Yii2 使用 .env 来配置项目环境变量

    2019独角兽企业重金招聘Python工程师标准>>> Yii2 高级版本使用命令 php init 初始化项目之后会提供类似 main.php 和 main-local.php 来 ...

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

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

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

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

  4. bashrc java_bashrc添加环境变量 linux怎么配置path环境变量

    怎么在.bashrc中设置环境变量 # .bashrc set JAVA_HOME=/usr/j2sdk export JAVA_HOME set PATH=$PATH:$JAVA/bin expor ...

  5. 2021-04-20 没有配置Git环境变量

    'git' 不是内部或外部命令,也不是可运行的程序 或批处理文件. 解决办法: 去百度大概搜了一下,是因为没有配置Git环境变量的原因,但是没有具体的解决步骤,特此记录一下. 右键查看git安装目录: ...

  6. yarn的安装和使用,并配置用户环境变量

    1.使用npm安装 npm i yarn -g verbose 2.切换到淘宝镜像 yarn config set registry https://registry.npm.taobao.org 3 ...

  7. linux配置java环境变量(详细)

    一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586.bin 这时会出现一段协议,连继敲回车, ...

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

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

  9. win10配置java环境变量,解决javac不是内部或外部命令等问题

    win10配置java环境变量,解决javac不是内部或外部命令等问题 * 1,首先进入环境变量页面  2,在系统变量下面配置 JAVA_HOME:你自己的jdk的路径 CLASSPATH= .;%J ...

最新文章

  1. 避免成为调包侠,从数学角度再看深度学习
  2. 超线程技术——超线程技术让(P4)处理器增加5%的裸晶面积,就可以换来15%~30%的效能提升,本质单核模拟双核!和异步编程的思想无异。...
  3. TP5 实现基于标签简单的推荐算法
  4. Android APK反编译得到Java源代码或资源文件
  5. ASP.NET Core 2 学习笔记(三)中间件
  6. Java实现素数的判断
  7. linux之so文件、a文件、o文件的区别
  8. mysql 半同步_mysql 主从同步 与 半同步
  9. python编的俄罗斯方块游戏_python编写俄罗斯方块
  10. 沈阳药科大学计算机二级好考吗,沈阳药科大学考研难吗?一般要什么水平才可以进入?...
  11. CTF-实验吧-安全杂项-社交网络
  12. php网上花店管理系统的论文,网上花店管理系统
  13. 2022蓝桥杯你值得拥有
  14. STM32 BOR/POR/PDR
  15. 镁光闪存颗粒对照表_详解闪存颗粒的种类
  16. 深度揭秘:消费者应如何激活iPhone
  17. 网络通信技术--设置IP地址
  18. D-Link DAP-1860:远程命令执行和认证绕过漏洞
  19. 如何把很多个pdf合成一个?pdf合并成一个pdf软件?
  20. 【CQOI2009】跳舞

热门文章

  1. 极速office(Word)怎么在空白处添加下划线
  2. 捉虫 | mmlab 系列安装过程遇到的问题合集
  3. 日式卡通渲染笔记(罪恶装备 碧蓝幻想 原神 战双)
  4. 接口自动化测试实战之pytest框架+allure讲解
  5. R语言使用tiff函数将可视化图像结果保存tiff格式、使用tiff函数打开图像设备、使用dev.off函数关闭图像设备、使用compression参数自定义压缩类型(形式)
  6. 24色色卡及imatest个测试项说明
  7. JDK1.8,Java8常用新特性
  8. c语言测试无法打开pdb,无法打开PDB文件,
  9. 【JAVA】Win10实现Java文件的开机自启动(附详细步骤)
  10. 谷歌浏览器用不了/打不开怎么办