How to use getenv() in php and SetEnv in a .htaccess with a compiled php-cgi on a shared host

穿精又带淫゛_ 提交于 2019-11-29 03:25:11

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...

In order for $_ENV to work, I had to reconfigure variables_order = "GPCSE" in php.ini. By default, it did not include E for $_ENV, it was originally variables_order = "GPCS"

This directive determines which super global arrays are registered when PHP starts up. G,P,C,E & S are abbreviations for the following respective super globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty paid for the registration of these arrays and because ENV is not as commonly used as the others, ENV is not recommended on productions servers. You can still get access to the environment variables through getenv() should you need to.

Default Value: "EGPCS"

Development Value: "GPCS"

Production Value: "GPCS";

http://php.net/variables-order

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!