PHP:getenv()无法读取的环境变量

时间:2014-06-25 18:46:45

标签: php apache environment-variables debian-based

我正在使用.htaccess文件来设置环境变量

SetEnv ENV "development"

可以通过$ _SERVER [' ENV']阅读,但不能通过getenv(' ENV')阅读; 对于getenv(),我必须使用

putenv('ENV=development');

不知道为什么.htaccess中设置的变量不能被getenv()读取。

编辑: 因为我正在使用外国脚本,其中" ENV"被问到我没有意识到只是名字" ENV"造成麻烦(保留?)。 只使用另一个环境变量名称的测试按预期工作

SetEnv REDIRECT_ENV "development"

编辑2: 环境是Apache 2.2,fastcgi,debian wheezy,php5.4.4 我注意到VirtualBox VM上的这种行为以及使用相同组件在线的rooted服务器

1 个答案:

答案 0 :(得分:1)

您可以使用mod_rewrite来检测env:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^stage\.domain\.com$
RewriteRule (.*) $1 [E=PYRO_ENV:stage]

RewriteCond %{HTTP_HOST} ^www\.domain\.com$
RewriteRule (.*) $1 [E=PYRO_ENV:production]

SetEnvIf Host ^stage\.example\.com$ PYRO_ENV=stage
SetEnvIf Host ^(www\.)?example\.com$ PYRO_ENV=production