为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的$ _ENV为空?

为什么我的$ _ENV为空?

PHP
肥皂起泡泡 2019-12-27 15:10:24
我正在运行,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。


查看完整回答
1 反对 回复 2019-12-27
?
慕村拓拓栽

TA贡献2条经验 获得超1个赞

我也遇到了类似问题
查看完整回答
反对 回复 2020-01-02
?
weixin_慕少1111222

TA贡献4条经验 获得超0个赞

好像是一个是服务端的变量一个是其他地方的用nginx遇到过类似的

查看完整回答
反对 回复 2020-01-02
?
四季花海

TA贡献1811条经验 获得超5个赞

REDIRECT_*如果您使用的是RewriteRules,则会显示变量。在我的服务器上,它们也是如此。它可能与在FastCGI下运行有关。如果与suexec结合使用,最有可能清理整个环境的var池。PassEnv特别是可能需要进行其他配置才能恢复它们。至于为什么getenv()为您工作,我不知道。但是所有现象都是特定于您的服务器和php配置的。询问服务器故障,他们应该知道。


查看完整回答
反对 回复 2019-12-27
  • 5 回答
  • 0 关注
  • 470 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信