2012-04-21 15 views
0

ローカルマシンでZend MVCを開発しており、ステージングにDreamHostサイトを使用しています。 、環境変数管理のベストプラクティス

でmyproject /公共/ .htaccessファイルに次の行が含ま:zend quick startあたりとして、私のローカルマシン上で、私はこのように、プロジェクトの公開ディレクトリにある.htaccessファイルの中から、開発に私のAPPLICATION_ENVを設定しました

「SetEnv APPLICATION_ENV開発」

これはローカルで正常に動作します。しかし、ステージングサーバーでapp_envを使用しようとすると、そこには使用されません。このthreadは、おそらくsuexecがバックグラウンドで実行されていることを示唆していました。私はいくつかの掘りと確かに、Dreamhost blocks custom environment variablesをやった。

"HTTP_"を "APPLICATION_ENV"に追加してから、最初の回避策を試してから、元のバージョンとdreamhostのバージョンの両方を確認するためにpublic/index.php内に別の条件を追加しました。

// 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スクリプトで作業していないので、2番目と3番目の回避策を気にしませんでした。

TL; DR

だから、私の知る限りそれを理解して、私のオプションは、私自身のコンフィグシステム(別のファイルにapp_envを保存を作成するように思える公共/ index.phpの中で、そのファイルをロードするためのどちらかであります上記のコード例の 'production'の代わりに 'staging'というだけの意味で、app_envをapp_envでコード化してください。私が後者に行った場合、私のpublic/index.phpファイルを.gitignoreする必要があります。ちょっと変わったようです。これまでは、私はそのファイルを変更する必要がなかったし、私がそれを混乱させないと、完全に私のリポジトリの外に置くことはできません。 考えますか?提案?さらなる回避策?

+0

あなたはどのウェブサーバを使用していますか? –

+0

dreamhost.com、これは、今、右下がりです...不吉なことです。 – dsulli

+0

私はそれが何を実行するソフトウェア、Apache、nginx、zendサーバーなどを意味します... –

答えて

1

私はあなたと同じ問題を経験しました。しかし、見た目ほど大きくはありません。 index.phpが設定されると、それは決して変更されないので、バージョンコントロールの外に置いても安全です。

ハードコードあなたの開発者、ステージングサーバー、プロダクションサーバーのそれぞれのAPPLICATION_ENVの定義を忘れて、それを忘れてしまいます。

私はZFで2年間開発しています。最後にindex.phpを変更したときに、各サーバごとに設定する以外は思い出せません。

tl; dr 状況に応じてハードコーディングAPPLICATION_ENV以外を行うことはできません。

+1

助けてくれてありがとう。私はzendで約3ヶ月しか作業していないので、これを使った経験は良い見通しです。 – dsulli

+0

問題はありません、プロジェクトには神運があります。 – vascowhite