2

環境に依存するパラメーターを構成する方法について、奇妙なアイデアが浮かびました。Railsのconfig/database.ymlにあるようなパラメーターのようなもの

私の現在のプロジェクトでは、PHPとLitespeed Webサーバーを使用しています(ただし、同じ手法がPHP + Apacheにも当てはまります)。「これにmod_rewriteを使用しないのはなぜですか?」環境ごとに個別の仮想ホスト構成があります(現時点では開発/本番)

私が今持っているのは:


RewriteRule (.*) $1 [env=development:1]

開発環境の仮想ホスト用。しかし、それがこのようなものになるとしたらどうでしょうか?


RewriteRule (.*) $1 [env=development:1,env=mysql_host:localhost,env=mysql_port:3306,env=mysql_user:root,env=mysql_pass:,env=mysql_db:mydbname]

それは理にかなっていますか、それともいくつかの問題を引き起こしますか?どう思いますか?

4

5 に答える 5

3

書き換えルールは、そのような構成情報を配置するための特に直感的な場所ではないと思います。何か誤解しているのかもしれませんが、開発環境、ステージング環境、本番環境の違いはデータベース接続だけですか? 通常、コードも異なります (少なくとも 1 回は変更が加えられます)。そのため、リビジョン管理システムを使用している場合は、テンプレート構成ファイル (database.cfg.template) をコピーする方がよいと思います。 (そしてリビジョン管理システムに無視するように指示します)および変更します(database.cfgに)。そうすれば、この情報がどこにあるかは明らかです。

于 2008-12-14T10:56:02.173 に答える
1

あなたは正しいです-それは奇妙な考えです。

IMO、これはmod_rewriteの非常に悪い使用法です。確かに、構成情報はコードベースではなくマシンに属しますが(私がよく目にする間違い)、必ずしもWebサーバー構成に属するとは限りません。

バージョン管理によって管理されていない構成ファイルをお勧めします。

于 2008-12-14T23:51:27.273 に答える
0

仮想ホストで環境を設定したい場合は、次のようなことを行うことができます

php_value ENV "development"

そして、それを$_SERVER配列から読み取ります

于 2008-12-21T06:25:07.673 に答える
0

まず、実際に URL を変更しない場合は、代わりに $1 を使用せず、ダッシュのみを使用してください。ドキュメントに従って:

ダッシュは、置換を実行しないことを示します (既存のパスはそのまま渡されます)。これは、パスを変更せずにフラグ (以下を参照) を適用する必要がある場合に使用されます。

しかし、実際には、答えはmod_envだと思います。SetEnv ディレクティブを <VirtualHost> ブロック内に配置して、不要な RewriteRule foo を回避できます。

于 2009-01-02T04:23:20.220 に答える
0

現在の環境を定義する最適かつ唯一の場所は、ブートストラップです。

symfonyまたはagaviブートストラップ ファイルを見てください。

于 2009-01-02T08:08:55.113 に答える