web-dev-qa-db-ja.com

SetEnv APPLICATION_ENV開発-.htaccessとZend Frameworkの相互作用?

私のhtaccessには次のものがあります。

SetEnv APPLICATION_ENV development

このファイルを製品に渡すとき、次のように変更します。

SetEnv APPLICATION_ENV production

この

開発

そして

製造

zend Frameworkで設定されているapplication.ini正しい?

ここでZendとApacheはどのように通信しますか?Zendはそのhtaccess命令をどのように認識しますか?

ありがとう。

25
MEM

SetEnvは、Apacheの構成(.htaccessファイルまたはVirtualHost)で使用され、環境変数を定義します。

PHPから、次のいずれかの環境変数を読み取ることができます。


指定されたindex.php in Zend Frameworks QuickStart では、環境変数を使用して、PHP APPLICATION_ENV

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV',
              (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
                                         : 'production'));

そして、その定数は後でアプリケーションを初期化するために使用されます:

// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);
39
Pascal MARTIN

コミュニケーションの流れは、あなたがそれを呼ぶとき、次のとおりです。

使用する場合

SetEnv APPLICATION_ENV生産

.htaccessでは、そこに設定した環境が使用されます。どうして?

Index.phpの次のコードは、.htaccessでSetEnvを使用している場合に既に定義されている場合、定数を定義しません。

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV',
              (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
                                         : 'production'));

.htaccessが定数を定義していない場合、index.phpで提供される値が使用されます。私があなたであったとしても、私はそれを同期し続けます。仮想ホストに対してAllowOverrideを設定するのを忘れるなどの間違いを犯す可能性があるため、.htaccessが存在していてもindex.phpによって環境が設定されるという状況になります。

9
markus