私のhtaccessには次のものがあります。
SetEnv APPLICATION_ENV development
このファイルを製品に渡すとき、次のように変更します。
SetEnv APPLICATION_ENV production
この
開発
そして
製造
zend Frameworkで設定されているapplication.ini正しい?
ここでZendとApacheはどのように通信しますか?Zendはそのhtaccess命令をどのように認識しますか?
ありがとう。
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'
);
コミュニケーションの流れは、あなたがそれを呼ぶとき、次のとおりです。
使用する場合
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によって環境が設定されるという状況になります。