SetEnv APPLICATION_ENV development - .htaccess interacting with Zend Framework?

后端 未结 2 1432
傲寒
傲寒 2021-01-30 14:05

I have the following on my htaccess.

SetEnv APPLICATION_ENV development

When I pass this file to prodution, I will change it to:



        
相关标签:
2条回答
  • 2021-01-30 14:56

    The flow of communication, as you call it, is the followoing:

    If you use

    SetEnv APPLICATION_ENV production

    in your .htaccess, the environment you set there, will be used. Why?

    The following piece of code from your index.php doesn't define the constant, if it has been defined already, which is the case, if you use SetEnv in your .htaccess.

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

    If your .htaccess doesn't define the constant, the value provided in the index.php will be used. If I were you, I would still keep it in sync. Because you may make mistakes like forgetting to set AllowOverride for your vhost which would result in a situation where the environment is set by the index.php even though the .htaccess is present.

    0 讨论(0)
  • 2021-01-30 15:07

    SetEnv, used in Apache's configuration (be it a .htaccess file, or a VirtualHost), defines an environment variable.

    From PHP, you can read environment variables either :

    • using the getenv() function.
    • Or in the $_SERVER or $_ENV superglobal variables


    Taking a look at the given index.php in Zend Frameworks QuickStart, you'll see it uses that environment variable the define the PHP constant called APPLICATION_ENV :

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

    And that constant is later used to initialize the application :

    // Create application, bootstrap, and run
    $application = new Zend_Application(
        APPLICATION_ENV,
        APPLICATION_PATH . '/configs/application.ini'
    );
    
    0 讨论(0)
提交回复
热议问题