Yii:介绍DEV和PROD环境

时间:2014-07-23 05:31:09

标签: php yii development-environment production-environment

我想编写Yii代码,它在DEV和PROD环境中有所不同。例如,在PROD上我希望应用程序发送真实的电子邮件,而在DEV上写入所有文件或发送到本地邮箱。

此外,在DEV上启用数据库分析并在PROD上禁用它会很好。

有没有办法完成任务?

3 个答案:

答案 0 :(得分:1)

也许此扩展程序可以帮助您: http://www.yiiframework.com/extension/yii-environment/

答案 1 :(得分:0)

让配置文件不同,让所有其他来源都相同。

答案 2 :(得分:0)

我只是根据包含基本(公共)配置的主机包含不同的配置文件。

覆盖特定环境的db密码的示例:

index.php

$configFile = $_SERVER['SERVER_NAME'] . '.php';
if ($configFile == '.php') $configFile = 'main.php';
$configFile = "$baseDir/config/$configFile";
$app = Yii::createWebApplication($configFile);
$app->run();

main.php

return array(
   ...
   'components' => array(
      'db' => array(
        'connectionString'            => 'mysql:host=localhost;dbname=mydb',
        'username'                    => 'some_user',
        'password'                    => 'some_password',
      )
   )
);

production.server.com.php

// Include common config
$config = require(dirname(__FILE__) . '/main.php');
// Remove whatever we don't need here (obviously optional)
unset($config['components']['...']);

return CMap::mergeArray(
   $config,
   array(
      'components' => array(
         'db' => array(
            'password' => 'alternative_production_password'
         )
      )
   )
); 

所以基本上这会为您提供基于服务器主机的自定义配置文件。 显然,如果你使用它,你应该验证主机名和配置是否存在。

您还可以使用其他内容(例如环境定义等)。

基本原则保持不变: “最终”配置文件包括公共配置,删除不需要的东西(如果适用)并定义仅包含需要更改的内容的数组结构。此结构与公共配置合并,以产生最终配置。