SetEnv APPLICATION_ENV开发 - .htaccess与Zend Framework交互?

MEM*_*MEM 25 apache zend-framework

我的htaccess上有以下内容.

SetEnv APPLICATION_ENV development
Run Code Online (Sandbox Code Playgroud)

当我将此文件传递给prodution时,我将其更改为:

SetEnv APPLICATION_ENV production
Run Code Online (Sandbox Code Playgroud)

这个

发展

生产

在Zend Framework application.ini上设置正确吗?

Zend和Apache如何在这里交流?Zend如何知道htaccess指令?

谢谢.

Pas*_*TIN 39

SetEnv,在Apache的配置中使用(无论是.htaccess文件还是VirtualHost),定义了一个环境变量.

从PHP,您可以读取环境变量:


在给定纵观index.php的Zend框架快速入门,你会看到它使用环境变量中定义了一个名为PHP常数APPLICATION_ENV:

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV',
              (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
                                         : 'production'));
Run Code Online (Sandbox Code Playgroud)

并且该常量稍后用于初始化应用程序:

// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);
Run Code Online (Sandbox Code Playgroud)

  • `APPLICATION_ENV`用于加载配置文件的正确部分*(或PHP代码的某些部分)* - 在其中启用*(或不)*显示错误. (3认同)

mar*_*kus 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'));
Run Code Online (Sandbox Code Playgroud)

如果.htaccess未定义常量,则将使用index.php中提供的值.如果我是你,我仍会保持同步.因为您可能会犯错误,例如忘记为您的vhost设置AllowOverride,这会导致index.php设置环境的情况,即使存在.htaccess.