Just putting in context to clarify the main question:
On my development machine, PHP5.3.1 is installed on Apache as a module, I use SetEnv APPLICATION_ENVIRONMENT development in my application's root .htaccess file. It is then easily retrievable from any php script with getenv('APPLICATION_ENVIRONMENT').
On the production server, on a sharedhost (dreamhost), I compiled myself php5.3.1 since it was not directly supported. Everything works fine except that getenv('APPLICATION_ENVIRONMENT') returns false.
In the sharedhost root .htaccess for my domain, I use this .htaccess file
Options +ExecCGI
AddHandler php-cgi .php
Action php-cgi /cgi-bin/php.cgi
<FilesMatch "^php5?\.(ini|cgi)$">
Order Deny,Allow
Deny from All
Allow from env=REDIRECT_STATUS
</FilesMatch>
Options -indexes
php5.cgi resides in /cgi-bin and works very well. Of course in my application's root folder I have another .htaccess defining:
SetEnv APPLICATION_ENVIRONMENT production
But when using getenv('APPLICATION_ENVIRONMENT') it returns false, any idea how to resolve this?
Ok I finally got it. On dreamhost, it is possible to use fastcgi and therefore declare environment variables with it. It consists of just adding this simple script
#!/bin/sh
export PHP_FCGI_CHILDREN=2
exec /home/USERNAME/YOURDOMAIN/cgi-bin/php.cgi
Which is where my compiled PHP5.3.1 was located. chmod 744 on that file called dispatch.fcgi which will be allowed more memory by dreamhost's watchdog.
After that I added to my domain's .htaccess the following:
Options +ExecCGI
AddHandler fastcgi-script fcg fcgi fpl
AddHandler php5-fastcgi .php
Action php5-fastcgi /dispatch.fcgi
now in the application's root I have another .htaccess with:
SetEnv APPLICATION_ENVIRONMENT staging
In a php script is is retrievable via getenv('REDIRECT_APPLICATION_ENVIRONMENT');
For the SetEnv
directive to work, your hosting service must have the mod_env
module activated...
But, even if it's activated, maybe you don't have to permission to use SetEnv
.
Just to be sure the problem is not in your code, you might want to check the ouput of phpinfo()
: at the bottom of the page, there should be a section containing environment variables as seen from PHP -- if yours is not in there, it's not a good sign for you...
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