我正在使用.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服务器
答案 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