1

ローカルマシンでZendMVCを開発しており、ステージングにDreamHostサイトを使用しています。zendクイックスタートに従って、ローカルマシンで、次のように、プロジェクトのパブリックディレクトリにある.htaccessファイル内からAPPLICATION_ENVを開発に設定しました。

myproject / public / .htaccessには、この行が含まれています。

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

tl; dr

したがって、私が理解している限り、私のオプションは、独自の構成システムを作成するか(app_envを別のファイルに保存し、そのファイルをpublic / index.phpにロードします。これは、オプション2を検討する価値があるよりも多くの作業のようです)、または単に「ハード」は、app_envをデフォルトの位置にコーディングします。つまり、上記のコード例の「本番」の代わりに、「ステージング」とだけ表示されます。後者を使用した場合、public / index.phpファイルを.gitignoreする必要がありますが、これは少し奇妙に思えます。これまでは、そのファイルを変更する必要はありませんでした。ファイルを完全にリポジトリの外に置いておくのは言うまでもなく、ファイルをいじらないほうがよいと思います。考え?提案?さらなる回避策?

4

1 に答える 1

2

私はあなたと同じ問題を経験しました。ただし、見た目ほど大きくはありません。index.phpを設定すると、変更されることはないため、バージョン管理から外しても安全です。

開発サーバー、ステージングサーバー、本番サーバーのそれぞれでAPPLICATION_ENVの定義をハードコーディングし、それを忘れてください。

私は2年間ZFを使用して開発してきましたが、サーバーごとに設定する以外に、index.phpに最後に変更を加えたのは、1行だけ変更したことを思い出せません。

tl;dr 状況に応じてAPPLICATION_ENVをハードコーディングする以外に努力する価値はありません。

于 2012-04-21T07:12:41.430 に答える