1

我正在本地机器上开发 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 文件,这看起来有点奇怪。在此之前,我从来不需要更改该文件,并且认为如果我不弄乱它会更好,更不用说将它完全留在我的存储库之外。想法?建议?进一步的解决方法?

4

1 回答 1

2

我遇到了和你一样的问题。然而,它并没有看起来那么大。一旦 index.php 被设置,它就永远不会改变,因此将它排除在版本控制之外是安全的。

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

我已经使用 ZF 进行了两年的开发,我不记得上次我对 index.php 进行了更改,除了为每个服务器设置它,也就是只更改 1 行。

tl; dr 在您的情况下,除了硬编码 APPLICATION_ENV 之外,不值得付出努力。

于 2012-04-21T07:12:41.430 回答