2012-03-20 13 views
2

私の開発サーバーとプロダクション(およびベータテスト)サーバーを、HTTP_HOSTのようなものに頼ることなく自動的に最も効率的に区別できるようにしたいと考えています。私はこれを他の開発者には分かりやすくするため、それを心配する必要はありません。PHP用の開発サーバーと効率的なサーバーの区別

私は、プロダクションにデプロイするときに、事前コンパイル用のCSSと圧縮用のjsを使用していますが、非圧縮のjs(およびオンザフライに準拠したcss)を本番用にします。単純な "開発"フラグでは区別できますが、この変数を開発環境に取り入れる最良の方法は何ですか?

私の現在の計画は、展開プロセスの一部としてphp(またはiniファイル、parse_ini_fileで解析する)ファイルを動的に書き換え、開発者をfalseに設定することです(私はこのファイルを書き換えてコンパイルされたCSSとJS)。しかし、予期せぬことがスクリプトのデプロイに間違っていると書かれているように、開発者モードがプロダクションにプッシュされる危険性があるかもしれないと私は心配しています。言い換えれば、私は、生産システムが開発システムと誤解されるリスクがないように、開発環境に固有の何かがあることを望んでいます。

別のuser.iniファイルを使用してこれを識別するためのカスタム "開発"フラグを設定することを検討しましたが、問題を解決するためには問題がありましたが、それ以上の時間を費やす前に、 。

答えて

4

あなたができることは、各サーバーのhttpd.confファイルにフラグを設定することです。あなたのDevボックスのために、これをあなたのapache confに追加することができますSetEnv APPLICATION_ENV development。あなたの生産ボックスについては、同じSetEnv APPLICATION_ENV productionを実行してください。私たちはコミットしてから除外された設定ファイルを用いて生産から私たちのいくつかのdevのサーバーを区別している弊社で

switch ($_SERVER['APPLICATION_ENV']){ 

    case 'production': 

     define('SOME_CONSTANT', 'SOME VALUE'); 

     break; 

    case 'development': 

     define('SOME_CONSTANT', 'SOME VALUE'); 

     break; 
} 
+0

これは私が以前使用してきた非常に信頼できる解決策ですが、検出をデフォルトにしないように注意することをお勧めします。このようにして、環境変数を新しいサーバーに設定するのを忘れた場合、それは非プロダクトボックスのように動作します。また、特定の仮想ホストに変数を制限するには、特定のApacheサイト設定の ' SetEnv APPLICATION_ENV production ...'を使用します。 –

1

おそらくすべてのdevサーバを1つのサブドメインに置き、それをHTTP_HOST経由で使用しますが、それを避けたいのであれば、それらのサーバの設定ファイルにフラグを使用するのが最善の方法でしょうこれがあなたが試したものであれば何が問題になりましたか?)、または存在するものがあれば特定のファイル/ディレクトリをテストしてください。設定ファイルのフラグは、私が使用する方法と私が一番見ている方法です。誤ってセットするのはかなり難しい。

また、必要に応じてライブラリの開発版に切り替えるGETによってフラグを設定することもできます。

これまでのところうまくいかなかったことについて少しはっきりしていません。実際にはここで問題を引き起こしている連続的な統合の問題ですか?

+0

私たちのdevサーバでは、開発者ごとに1つ(またはそれ以上)の仮想ホストセットを実行するApacheがあります。私の仮想ホストのセクションの中に私が追加しました: AllowOverrideすべて php_value user_ini.filename "/var/www/foo/dev.ini" – Karptonite

+0

しかし、私がuser_ini.filenameの値を見ると、Apacheを再起動した後PHPコード、(ini_getを使用して)私はデフォルト値を取得します。これは私の最初の時間は、Apacheのconfファイルを乱しているので、私はおそらく何かが明らかに欠けている。 – Karptonite

+0

Apacheのconfファイルを扱うときにはかなり正常です;)AllowOverrideは.htaccessファイルについてですか?私は少し錆びますが、私はあなたがまだ各ユーザのためのファイルシステムの設定オーバーライドとしてそれを追加する必要があると思います。 –

0

:PHPアプリケーションの設定で

は、あなたがこのような何かを行うことができます各環境の実際の設定と、サーバの状態を示す変数が含まれています。

関連する問題