当前位置: 首页 > 面试题库 >

为什么我的$ _ENV为空?

澹台星剑
2023-03-14
问题内容

我正在运行,Apache/2.2.11 (Win32) PHP/5.3.0并且在.htaccess文件中执行了以下操作:

SetEnv FOO bar

如果我$_ENV在PHP文件中打印出变量,则会得到一个空数组。为什么我的环境变量没有出现在这里?为什么首先是空的?

我确实找到了变量,但是它出现在$_SERVER变量中。由于某种原因,它出现了两次。为什么是这样?

[REDIRECT_FOO] => bar
[FOO] => bar

看来我可以使用来获得它getenv('FOO'),所以也许我应该只使用它。但是我仍然对造成这种情况的原因有些好奇。这是Windows问题吗?还是发生了什么事?


问题答案:

原来这里有两个问题:

1.$_ENV仅在php.ini允许的情况下进行填充,默认情况下似乎没有这样做,至少在默认的WAMP服务器安装中没有。

; This directive determines which super global arrays are registered when PHP
; starts up. If the register_globals directive is enabled, it also determines
; what order variables are populated into the global space. G,P,C,E & S are
; abbreviations for the following respective super globals: GET, POST, COOKIE,
; ENV and SERVER. There is a performance penalty paid for the registration of
; these arrays and because ENV is not as commonly used as the others, ENV is
; is not recommended on productions servers. You can still get access to
; the environment variables through getenv() should you need to.
; Default Value: "EGPCS"
; Development Value: "GPCS"
; Production Value: "GPCS";
; http://php.net/variables-order
variables_order = "GPCS"

当我将variables_orderback 设置为时EGPCS$_ENV不再是空的。

2.当您SetEnv在中使用时.htaccess,它以而$_SERVER不是中结束$_ENV,我得说这在命名时有点令人困惑SetEnv

# .htaccess
SetEnv ENV dev
SetEnv BASE /ssl/

# php
var_dump($_SERVER['ENV'], $_SERVER['BASE']);

// string 'dev' (length=3)
// string '/ssl/' (length=5)

3.该getenv函数将始终有效,并且不受$ _ENV的PHP设置的影响。此外,它似乎对大小写不敏感,这可能很有用。

var_dump(getenv('os'), getenv('env'));

// string 'Windows_NT' (length=10)
// string 'dev' (length=3)


 类似资料:
  • 问题内容: 我在TableView中添加了默认的TEST1和TEST2作为Name Col,但是在运行它时却没有显示。这是我使用过的两个类和一个fxml,有人可以给我一些有关此问题的建议吗? 仅一个包调用:controllerJBoxFXTest 第一类MainView.class包controllerJBoxFXTest; 在第二个MainController.java中,可以看到我添加了TES

  • 问题内容: 我有一个具有字段()的Spring 类(),但是该字段是我尝试使用它时所用的。日志显示该bean和该bean都在创建,但是每当我尝试在服务bean上调用该方法时,都会得到一个a 。Spring为什么不自动接线该领域? 控制器类: 服务等级: 应该自动连接的服务bean,但不是: 当我尝试时,出现以下异常: 问题答案: 本文向大家介绍为什么我的Spring @Autowired字段为空?

  • 问题内容: 我似乎无法弄清楚为什么我的JFrame为空。我要去哪里错了? 导入javax.swing。*; 导入java.awt.FlowLayout; 公共类GUIExample扩展JFrame { } 问题答案: 您忘记在jFrame中添加contentPane了,就像这样 我注意到您正在使用继承来构建jFrame,因此在这种情况下,您需要实例化自己的类。我已经用最小的代码重构了您的代码以运行

  • 问题内容: 我有一个简单的程序: 当我运行该程序时,我看到的只是用于输出。我原本希望我们会遇到第一轮,然后是,然后是etc。 这是由于这样的事实,一旦我们尝试在左侧重新声明,其值就会重置为? 如果有人可以指出我的详细情况,那将很棒。 更改为,似乎正在按预期方式打印数字。我对它达到最大32位值的速度感到惊讶! 问题答案: 该问题是由于整数溢出引起的。 在32位二进制补码算法中: 确实确实开始具有2的

  • 我已经为我的自定义日志拦截器执行了以下操作 我正在将拦截器设置为restTemboard 记录器正在将响应正确地打印到控制台,但最后响应会以空的形式返回给调用者。我无法调试和解决它。 我已经弄明白了StreamUtils。copyToString(response.getBody(),字符集。defaultCharset())正在读取一次输入流,并且不再在其中保存响应正文(现在为空) 还有谁也面临

  • 问题内容: 我在android虚拟机中使用以下代码 我收到HttpHostConnectException。不知道为什么?我已将网址中的地址从127.0.0.1更改为10.0.2.2,但仍然收到该异常。我的电脑中安装了wamp服务器,文件“ ReadingFromServer.php”位于“ www”文件夹中。 这是完整的堆栈跟踪 谢谢。 问题答案: 您是否在AndroidManifest.xml