PHP:getenv()无法读取环境变量
我正在使用.htaccess文件设置环境变量PHP:getenv()无法读取环境变量,php,apache,environment-variables,debian-based,Php,Apache,Environment Variables,Debian Based,我正在使用.htaccess文件设置环境变量 SetEnv ENV "development" 它可以由$_服务器['ENV']读取,但不能由getenv('ENV')读取; 对于getenv(),我必须使用 putenv('ENV=development'); 不知道为什么在.htaccess中设置的变量不能被getenv()读取 编辑: 因为我使用的是一个外文脚本,其中询问了“ENV”,所以我没有意识到仅仅是名称“ENV”引起了麻烦(保留?)。 仅使用另一个环境变量名的测试按预期工作 S
SetEnv ENV "development"
它可以由$_服务器['ENV']读取,但不能由getenv('ENV')读取;
对于getenv(),我必须使用
putenv('ENV=development');
不知道为什么在.htaccess中设置的变量不能被getenv()读取
编辑:
因为我使用的是一个外文脚本,其中询问了“ENV”,所以我没有意识到仅仅是名称“ENV”引起了麻烦(保留?)。
仅使用另一个环境变量名的测试按预期工作
SetEnv REDIRECT_ENV "development"
编辑2:
环境是Apache2.2、fastcgi、debian wheezy、php5.4.4
我注意到VirtualBox VM和根服务器online上的这种行为,使用相同的组件您可以使用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]
及
@狼人:很高兴知道;)你用“ENV”测试过吗?是的,我先测试过,然后评论。谢谢你的变体,但是如果名称是“ENV”,所有这些都不起作用。只有另一个变量名可以做到这一点,所以在这种情况下,“ENV”可能是一个保留字。你能用另一个术语吗?毕竟,它只是另一个变量名,对吗?是的,I ENV是保留的。这里是切克
SetEnvIf Host ^stage\.example\.com$ PYRO_ENV=stage
SetEnvIf Host ^(www\.)?example\.com$ PYRO_ENV=production