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.
<VirtualHost *:80>
#ServerName
#DocumentRoot
SetEnv APPLICATION_ENV "development"
# Directory
</VirtualHost>
But unfortunately I can't use ZF in my current project. How can I check this environment variable in my PHP code?
Since SetEnv set's the value to Apache's environment, you can get it with
apache_getenv
— Get an Apache subprocess_env variableor just
getenv
— Gets the value of an environment variableIf 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.