我正在运行,Apache/2.2.11 (Win32) PHP/5.3.0并且在.htaccess文件中执行了以下操作:SetEnv FOO bar如果我$_ENV在PHP文件中打印出变量,则会得到一个空数组。为什么我的环境变量没有出现在这里?为什么首先是空的?我确实找到了变量,但是它出现在$_SERVER变量中。由于某种原因,它出现了两次。为什么是这样?[REDIRECT_FOO] => bar[FOO] => bar看来我可以使用来获得它getenv('FOO'),所以也许我应该只使用它。但是我仍然对造成这种情况的原因有些好奇。这是Windows问题吗?还是发生了什么事?
5 回答
慕仙森
TA贡献1827条经验 获得超7个赞
$_ENV 变量是从运行PHP的环境中导入的,并且取决于您的设置(操作系统,服务器,PHP是作为Apache模块运行还是在FastCGI下运行,等等),这可能会有很大不同。
在Windows上以标准Apache + mod_php安装的IIRC中,更改变量的唯一方法$_ENV是更改Windows的环境变量(请参阅参考资料)。在Windows上处理PHP扩展时,这可能很重要,因为其中的某些扩展(例如php_ldap:)只能通过on上的环境vars进行配置$_ENV。
四季花海
TA贡献1811条经验 获得超5个赞
REDIRECT_*
如果您使用的是RewriteRules,则会显示变量。在我的服务器上,它们也是如此。它可能与在FastCGI下运行有关。如果与suexec结合使用,最有可能清理整个环境的var池。PassEnv
特别是可能需要进行其他配置才能恢复它们。至于为什么getenv()为您工作,我不知道。但是所有现象都是特定于您的服务器和php配置的。询问服务器故障,他们应该知道。
- 5 回答
- 0 关注
- 520 浏览
添加回答
举报
0/150
提交
取消