【问题标题】:How to set multiple environments in zf2zf2中如何设置多个环境
【发布时间】:2017-07-18 23:29:13
【问题描述】:

所以我在.htaccess使用这个

SetEnv APP_ENV development

比我config's 文件

 $env = getenv('APP_ENV');
if($env == 'development'){
//do something
}else{
//someting else
}

但现在事情变得越来越丑陋,因为有多种环境:

  1. 发展
  2. 测试
  3. 生产
  4. 服务器 1
  5. 服务器 2

每个环境都有不同的database settings 和其他设置 那么有没有比到处更改.htaccess 文件更好的解决方案??

【问题讨论】:

  • config/autoload/local.php 应该包含您特定于环境的设置,并且该文件在每个环境中应该不同。这是 ZF2 中的标准方法 - 不合适吗?
  • @TimFountain 我的解决方案谈到了这一点。确实。
  • 谁他妈的投反对票..

标签: php .htaccess zend-framework configuration zend-framework2


【解决方案1】:

我可以向您推荐我的架构:

我们不使用.htaccess,而是使用虚拟主机并在我们的虚拟主机中定义,例如:

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "c:/wamp/www"
    SetEnv APPLICATION_ENV "development"
    <Directory c:/wamp/www>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

从这里我的配置:

// application.config.php
        'config_glob_paths' => array(
            sprintf('config/autoload/{,*.}{global,%s,local}.php', $env),
        ), 

其中$env 等于:

$env = getenv('APPLICATION_ENV') ?: 'development';

您的 config/autoload/ 文件取决于您拥有的环境(示例):

生产:

  • orm.production.php

前期制作:

  • orm.preproduction.php

发展

  • orm.development.php

测试

  • orm.testing.php

其中 orm 是您的数据库配置。 (我用学说)

doctrine.global.php 中,当我想为数据库配置加载环境参数时,我有这个:

//doctrine.global.php
    'doctrine' => array(
        'connection' => array(
          'orm_default' => array(
            'driverClass' =>'Doctrine\DBAL\Driver\PDOMySql\Driver',
            'params' => include "orm.{$env}.php",
          ),
        ),

确保这些文件没有使用您的 git/mercurial/anythingelse(忽略的文件)进行版本控制

然后你就可以走了。

【讨论】:

    猜你喜欢
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多