我有我的htaccess以下。
SetEnv APPLICATION_ENV development
当我把这个文件传给生产者时,我将把它改为:
SetEnv APPLICATION_ENV production
这个
发展
和
生产
在Zend Framework application.ini上设置正确吗?
Zend和Apache在这里如何沟通? Zend如何知道这个htaccess指令?
谢谢。
在Apache配置中使用的SetEnv
(无论是.htaccess文件还是VirtualHost)定义了一个环境变量。
从PHP,你可以阅读环境变量:
getenv()
函数。 $_SERVER
或$_ENV
超全局变量中 看一下Zend框架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' );
沟通的流程就像下面这样:
如果你使用
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中提供的值。 如果我是你,我仍然保持同步。 因为你可能会犯一些错误,比如忘记为你的虚拟主机设置AllowOverride,这会导致这样一种情况:即使存在.htaccess,index.php也会设置环境。