2018-04-01 18:31:40 3762次浏览 5条回答 0 悬赏 10 金钱

yii框架中,怎样识别本地环境和服务器上的环境,然后根据不同环境选取对应的数据库。

  • 回答于 2018-04-02 01:08 举报

    直接在advanced版本中使用 ./init 命令切换环境。

    区分环境有如下常量:YII_ENVYII_ENV_TESTYII_ENV_DEV………………

    1 条回复
    回复于 2018-04-03 19:20 回复

    怎样能让它自动选择,不是手动来切换

  • 回答于 2018-04-02 08:10 举报

    config里配置

  • 回答于 2018-04-02 21:06 举报

    用Yii init做初始化
    Yii init初始化的过程其实就是copy根目录下environments中的配置的过程,在我们的版本库中所以的配置都应该是在版本库的,例外的是带-local的配置文件如main-local.php等, 这些文件被忽略了,所以我们可以在这上面做文章,在开发环境中我们其实只需要把配置直接提交到不带local的配置文件中,这样的话大家开发都共用一套环境,不需要切换来切换去,然后我们在environments中做多份其他环境的配置,我们的我们的本地配置就能覆盖掉版本库中的配置,这样就很好的实现了环境的分类,而且很容易的生产多环境的配置,比如我的就包含,dev,preview,prod,testing四套环境,具体怎么做呢, 就是在environments做多份配置,每个环境下可以做多个application的配置

    1 条回复
    回复于 2018-04-03 19:12 回复

    你的意思是说,就是在连接数据时,多配几套,然后判断选择。

  • 回答于 2018-04-04 11:09 举报

    恩, 多建几套,不需要判断, 要抓住精髓 (带-local的配置覆盖不带local的配置),有新增不一样的配置的使用,重新执行下php init命令, 然后选择自己需要的环境就可以自动切换过去了,我用了, 还挺好用的, 现在4套环境都稳定

  • 回答于 2018-04-04 11:13 举报

    1.png

    这是4套环境,这个需要在environments/index.php里面定义,比如新增preview环境则在index.php里面加上如下代码:

    'preview' => [
        'path' => 'preview',
        'setWritable' => [
            'backend/runtime',
            'backend/web/assets',
            'frontend/runtime',
            'frontend/web/assets',
        ],
        'setExecutable' => [
            'yii',
        ],
        'setCookieValidationKey' => [
            'backend/config/main-local.php',
            'frontend/config/main-local.php',
        ],
    ],
    
    
您需要登录后才可以回答。登录 | 立即注册
zhw123
试用期

zhw123 北京

注册时间:2018-04-01
最后登录:2018-05-08
在线时长:2小时14分
  • 粉丝0
  • 金钱10
  • 威望0
  • 积分30

热门问题