I'm developing a Zend MVC on my local machine, and am using a DreamHost site for staging. As per the zend quick start, on my local machine I set my APPLICATION_ENV to development from within a .htaccess file in the public directory of the project, like this:
myproject/public/.htaccess contains this line,
"SetEnv APPLICATION_ENV development"
This works just fine locally. But when I try to use my app_env in my staging server it's not there to use. This thread suggested that perhaps suexec was running in the background. I did some digging and sure enough, Dreamhost blocks custom environment variables.
I tried the first workaround that DH suggested, by prepending "HTTP_" to "APPLICATION_ENV", and then adding another conditional within public/index.php to check for both the original and the dreamhost version.
// Define application environment
defined('APPLICATION_ENV') || define('APPLICATION_ENV',
(getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') :
(getenv('HTTP_APPLICATION_ENV') ? getenv('HTTP_APPLICATION_ENV') : 'production')));
This didn't seem to work for me. Even in ssh, when I run 'env' in the command line, my application_env isn't listed. Since I'm not working with CGI script I didn't bother with the second and third workarounds.
tl;dr
So, as far as I understand it, my options are to either create my own config system (save app_env to a different file, load that file in public/index.php which seems like more work than it's worth considering option 2) or just 'hard' code the app_env into the default position - meaning, instead of 'production' in the code example above it would just say 'staging'. If I went with the latter, I'd have to .gitignore my public/index.php file, which just seems a little strange. Before this, I've never had to change that file and would assume that it's better if I don't mess with it, let alone completely leave it outside of my repository. Thoughts? Suggestions? Further workarounds?