Zend framework 环境变量管理的最佳实践

Zend framework 环境变量管理的最佳实践,zend-framework,.htaccess,workflow,dreamhost,Zend Framework,.htaccess,Workflow,Dreamhost,我正在本地机器上开发Zend MVC,并使用DreamHost站点进行登台。根据,在我的本地计算机上,我从项目公共目录中的.htaccess文件中将我的应用程序_ENV设置为development,如下所示: myproject/public/.htaccess包含此行 “SetEnv应用程序\环境开发” 这在当地很管用。但是当我尝试在我的暂存服务器中使用我的app_env时,它就不在那里可以使用了。这表明suexec可能是在后台运行的。我做了一些挖掘,果然 我尝试了DH建议的第一种解决方法,将

我正在本地机器上开发Zend MVC,并使用DreamHost站点进行登台。根据,在我的本地计算机上,我从项目公共目录中的.htaccess文件中将我的应用程序_ENV设置为development,如下所示:

myproject/public/.htaccess包含此行

“SetEnv应用程序\环境开发”

这在当地很管用。但是当我尝试在我的暂存服务器中使用我的app_env时,它就不在那里可以使用了。这表明suexec可能是在后台运行的。我做了一些挖掘,果然

我尝试了DH建议的第一种解决方法,将“HTTP_u”前置到“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'时,我的应用程序_env也没有列出。因为我没有使用CGI脚本,所以我没有考虑第二个和第三个解决方法

tl;博士

因此,据我所知,我的选择是要么创建我自己的配置系统(将app_env保存到另一个文件中,将该文件加载到public/index.php中,这似乎比选项2更值得考虑),要么将app_env“硬”编码到默认位置——这意味着,在上面的代码示例中,它只会说“staging”,而不是“production”。如果使用后者,我将不得不.git忽略我的public/index.php文件,这似乎有点奇怪。在此之前,我从未改变过这个文件,我认为如果我不弄乱它会更好,更不用说把它完全放在我的存储库之外了。
思想?建议?进一步的解决办法?

我遇到了与您相同的问题。然而,它并不像看上去那么大。一旦设置了index.php,它就永远不会更改,因此不受版本控制是安全的

在每个开发、登台和生产服务器上硬编码应用程序_ENV的定义,然后忘记它

我已经用ZF开发了两年了,我不记得我上一次对index.php做了什么更改,除了为每台服务器设置它,也就是只更改一行

tl;dr
在您的情况下,除了硬编码应用程序_ENV之外,不值得做任何努力。

您使用的是什么Web服务器?dreamhost.com,它现在已经关闭了。。。不祥。我是说它运行什么软件,apache,nginx,zend服务器等等。谢谢你的帮助。我在zend只工作了大约3个月,所以你在这方面的经验提供了一个很好的视角。没问题,祝你这个项目好运。