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.
SetEnv
defines an environment variable.
Once this has been set (either in your Apache's configuration, or at the system level), you can read its value using the getenv
function :
echo getenv('APPLICATION_ENV');
For instance, if you use this in your .htaccess
file :
SetEnv TEST glop
You can use this portion of PHP code :
var_dump(getenv('TEST'));
And you'll get :
string 'glop' (length=4)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With