从命令行访问$ _SERVER变量

时间:2014-06-18 14:04:47

标签: php codeigniter command-line environment-variables server-variables

如何访问我在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,但不相信这是问题。

思想?

2 个答案:

答案 0 :(得分:6)

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

要在CLI PHP脚本中使用$_SERVER变量,请参阅:Set $_SERVER variable when calling PHP from command line?


总结:

运行:VALUE_ONE=1 ANOTHER_VALUE=2 php cli.php

答案 1 :(得分:0)

某些$ _SERVER变量无法从命令行访问,这是合乎逻辑的,当使用命令行时,您没有指定方法(GET / POST等),那么您期望什么$ _SERVER [“HTTP_METHOD”是的?

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

var_dump($_SERVER);

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

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

总是尝试:

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