环境变量管理的最佳实践

时间:2012-04-21 04:52:46

标签: zend-framework .htaccess workflow dreamhost

我正在我的本地机器上开发Zend MVC,并使用DreamHost站点进行分段。根据{{​​3}},在我的本地机器上,我将APPLICATION_ENV设置为项目公共目录中.htaccess文件中的开发,如下所示:

  

myproject / public / .htaccess包含此行,

     

“SetEnv APPLICATION_ENV development”

这在当地工作得很好。但是当我尝试在我的临时服务器中使用我的app_env时,它就不能用了。这个zend quick start表明suexec可能正在后台运行。我确实做了一些挖掘,thread

我尝试了DH建议的第一个解决方法,将“HTTP_”添加到“APPLICATION_ENV”,然后在public / index.php中添加另一个条件来检查原始版本和dreamhost版本。

// Define application environment
defined('APPLICATION_ENV') || define('APPLICATION_ENV', 
  (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 
  (getenv('HTTP_APPLICATION_ENV') ? getenv('HTTP_APPLICATION_ENV') : 'production')));

这对我来说似乎不起作用。即使在ssh中,当我在命令行中运行'env'时,我的application_env也没有列出。由于我没有使用CGI脚本,所以我没有理会第二和第三种解决方法。

TL;博士

所以,据我所知,我的选择是要么创建我自己的配置系统(将app_env保存到另一个文件,在public / index.php中加载该文件,这似乎比考虑选项2更值得工作)或者只是'硬'将app_env编码到默认位置 - 这意味着,在上面的代码示例中,它只是说'staging'而不是'production'。如果我使用后者,我必须.gitignore我的public / index.php文件,这看起来有点奇怪。在此之前,我从来没有必要更改该文件,并假设如果我不弄乱它更好,更不用说完全将它留在我的存储库之外了。 思考?建议?进一步的解决方法?

1 个答案:

答案 0 :(得分:2)

我遇到了和你一样的问题。但是,它没有看起来那么大。一旦index.php被设置,它就永远不会改变,所以将它从版本控制中移除是安全的。

在每个开发,登台和生产服务器上硬编码APPLICATION_ENV的定义并忘记它。

我已经用ZF开发了两年了,我记不起上次我对index.php进行了更改,而不是为每个服务器设置更改,而且只更改了一行。

<强> TL;博士 除了在您的情况下硬编码APPLICATION_ENV之外,不值得做其他事情。