ローカルマシンで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する必要がありますが、これは少し奇妙に思えます。これまでは、そのファイルを変更する必要はありませんでした。ファイルを完全にリポジトリの外に置いておくのは言うまでもなく、ファイルをいじらないほうがよいと思います。考え?提案?さらなる回避策?