我正在本地机器上开发 Zend MVC,并使用 DreamHost 站点进行登台。根据zend quick start,在我的本地机器上,我从项目公共目录中的 .htaccess 文件中将我的 APPLICATION_ENV 设置为开发,如下所示:
myproject/public/.htaccess 包含这一行,
“SetEnv APPLICATION_ENV 开发”
这在本地工作得很好。但是当我尝试在我的登台服务器中使用我的 app_env 时,它就无法使用了。该线程表明 suexec 可能在后台运行。我做了一些挖掘,果然,Dreamhost 阻止了自定义环境变量。
我尝试了 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 编码到默认位置 - 意思是,在上面的代码示例中,它只会说“暂存”,而不是“生产”。如果我选择后者,我将不得不 .gitignore 我的 public/index.php 文件,这看起来有点奇怪。在此之前,我从来不需要更改该文件,并且认为如果我不弄乱它会更好,更不用说将它完全留在我的存储库之外。想法?建议?进一步的解决方法?