我的htaccess上有以下内容。
SetEnv APPLICATION_ENV development
当我将此文件传递给prodution时,我会将其更改为:
SetEnv APPLICATION_ENV production
这个
发展
和
生产
在Zend Framework application.ini 上设置正确吗?
Zend和Apache如何在这里交流? Zend如何知道htaccess指令?
感谢。
答案 0 :(得分:39)
SetEnv
,在Apache的配置中使用(无论是.htaccess文件还是VirtualHost),定义了一个环境变量。
从PHP中,您可以读取环境变量:
看一下Zend Frameworks QuickStart中给定的index.php
,您将看到它使用该环境变量来定义名为APPLICATION_ENV
的PHP常量:
// 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'
);
答案 1 :(得分:9)
正如你所说的那样,沟通的流程是下一步:
如果您使用
SetEnv APPLICATION_ENV制作
在您的.htaccess中,将使用您在此处设置的环境。为什么呢?
如果在.htaccess中使用SetEnv,则index.php中的以下代码不会定义常量,如果已经定义了常量,则会出现这种情况。
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV',
(getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
: 'production'));
如果.htaccess未定义常量,则将使用index.php中提供的值。如果我是你,我仍会保持同步。因为你可能会犯错,比如忘记为你的vhost设置AllowOverride,这会导致index.php设置环境的情况,即使.htaccess存在。