0

我正在使用 .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 和具有相同组件的在线根服务器上的这种行为

4

1 回答 1

1

您可以使用 mod_rewrite 来检测环境:

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
于 2014-07-01T10:07:34.233 回答