Set Application_ENV via virtual host config and read this in PHP

后端 未结 4 1710
北海茫月
北海茫月 2020-12-05 01:52

I like how this works in Zend Framework. I can know which environment I\'m currently using by checking APPLICATION_ENV constant in my controller.



        
4条回答
  •  借酒劲吻你
    2020-12-05 02:22

    Since SetEnv set's the value to Apache's environment, you can get it with

    • apache_getenv — Get an Apache subprocess_env variable

    or just

    • getenv — Gets the value of an environment variable

    If you look at public/index.php in a ZF project, you will see ZF uses getenv:

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

    An often use alternative would be to read the Hostname from PHP and define the constant accordingly:

    if(!defined('APPLICATION_ENV')) {
        if(FALSE === stripos($_SERVER['SERVER_NAME'], 'www.yourdomain.com')) {
            define(APPLICATION_ENV, 'development');
        } else {
            define(APPLICATION_ENV, 'production');
        }
    }
    

    This way, you don't have to rely on the environment setting at all.

提交回复
热议问题