从命令行访问$_SERVER变量


Accessing $_SERVER variables from command line

如何访问我在PHP命令行设置的$_SERVER变量?

当我尝试调用我创建的PHP方法时,我得到以下错误,这表明所有的$_SERVER变量只有在通过url调用我的应用程序时才定义,即webserver:

ERROR - Undefined index: MY_VAR /www/html/some_file.php
ERROR - Undefined index: MY_OTHER_VAR /www/html/some_file.php

更具体地说,我正在使用Codeigniter,但不认为这是问题。

想法吗?

如果您在web服务器配置中设置服务器变量,那么当您通过命令行访问PHP时,它们将不存在。(因为web服务器根本不会参与)

要在CLI PHP脚本中使用$_SERVER变量,请参见:从命令行调用PHP时设置$_SERVER变量?


总结:

run: VALUE_ONE=1 ANOTHER_VALUE=2 php cli.php

一些$_SERVER变量不能从命令行访问,这是合乎逻辑的,当使用命令行时,您不指定方法(GET/POST等),那么您期望$_SERVER["HTTP_METHOD"]是什么?

获取$_SERVER中设置的所有变量的一种解决方案是转储它:

var_dump($_SERVER);

然后从命令行调用文件,查看设置了哪些变量。

除此之外,在使用$_SERVER变量时一定要小心,它的行为实际上取决于平台和其他因素。

always try:

if(isset($_SERVER["MY_VAR"])) {
  // do what you want here
}