Reputation: 18993
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?
Upvotes: 53
Views: 86490
Reputation: 316969
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.
Upvotes: 50
Reputation: 1
I had the same problem then I solved it. The way to solve the problem is to declare all variables in an apache init script.
I'm using apache on centos and the init script is located in /etc/init.d/httpd
Add this code, but change it to meet your specific case.
ORACLE_HOSTNAME=ora11g.home.com; export ORACLE_HOSTNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME
ORACLE_SID=ora11g; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
export CLASSPATH
This solved my problem. I hope this helps.
Upvotes: 0
Reputation: 400932
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');
SetEnv TEST glop
You can use this portion of PHP code :
var_dump(getenv('TEST'));
And you'll get :
string 'glop' (length=4)
Upvotes: 15