Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:getenv()无法读取环境变量_Php_Apache_Environment Variables_Debian Based - Fatal编程技术网

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

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

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

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