Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set Application_ENV via virtual host config and read this in PHP

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?

like image 335
Nikita Fedyashev Avatar asked Mar 04 '10 11:03

Nikita Fedyashev


2 Answers

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.

like image 52
Gordon Avatar answered Sep 24 '22 08:09

Gordon


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) 
like image 21
Pascal MARTIN Avatar answered Sep 25 '22 08:09

Pascal MARTIN