2012-04-21 125 views
0

我在本地機器上開發了一個Zend MVC,並使用DreamHost站點進行登臺。由於每zend quick start,我的本地機器上設置我的APPLICATION_ENV發展從.htaccess文件內的項目的公共目錄,如下所示:環境變量管理的最佳實踐

的myproject /公/的.htaccess包含此行,

「SETENV APPLICATION_ENV發展」

這在當地工作就好了。但是當我嘗試在我的登臺服務器中使用我的app_env時,它不適合使用。這thread建議可能suexec在後臺運行。我做了一些挖掘,果然,Dreamhost blocks custom environment variables

我嘗試了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保存到不同的文件,加載該文件在公共/ index.php文件,這似乎像更多的工作比值得考慮選項2)或者只是'將'app_env編碼到默認位置 - 意味着,而不是上面的代碼示例中的'生產',它只會說'暫存'。如果我使用後者,則必須使用.gitignore我的public/index.php文件,這似乎有點奇怪。在此之前,我從來沒有必要更改該文件,並認爲如果我不惹惱它會更好,更不用說完全將它留在我的存儲庫之外。 想法?建議?進一步的解決方法?

+0

你使用的是什麼webserver? – 2012-04-21 11:32:04

+0

dreamhost.com,這就是這個時刻,正在下降......不祥。 – dsulli 2012-04-22 07:41:38

+0

我的意思是它運行什麼軟件,apache,nginx,zend服務器等... – 2012-04-22 09:28:06

回答

1

我遇到過和你一樣的問題。然而,它並不像看起來那麼大。一旦建立了index.php,它永遠不會改變,所以將它放在版本控制之外是安全的。

在您的每個開發,分期和生產服務器上對APPLICATION_ENV的定義進行硬編碼並忘掉它。

我已經用ZF開發了兩年了,我不記得上一次我對index.php做了一些修改,而不是爲每個服務器設置它,那只是改變了一行。

tl; dr 除了在您的情況下硬編碼APPLICATION_ENV以外,不值得花費精力去做其他事情。

+1

感謝您的幫助。我只在zend工作了大約3個月,所以你的經驗提供了一個很好的視角。 – dsulli 2012-04-21 12:59:41

+0

沒問題,這個項目的運氣好。 – vascowhite 2012-04-21 13:09:46