【问题标题】:Accessing $_SERVER variables from command line从命令行访问 $_SERVER 变量
【发布时间】:2014-08-08 21:02:39
【问题描述】:

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

当我尝试调用我创建的 PHP 方法时,我收到以下错误,这表明所有 $_SERVER 变量仅在通过其 URL 调用我的应用程序时定义,即网络服务器:

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

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

想法?

【问题讨论】:

  • @tim — 你如何设置服务器变量?
  • @JoelL 它们在 NGINX fastcgi_params 中设置。遵循良好的安全实践,希望将它们排除在我的应用之外。
  • @JoelL 谢谢。对于多个变量,它是逗号分隔的列表吗?
  • (我添加了一些细节的答案)

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


【解决方案1】:

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

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

var_dump($_SERVER);

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

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

总是尝试:

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

【讨论】:

    【解决方案2】:

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

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


    总结一下:

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

    【讨论】:

    • 这看起来不错,让我测试一下,然后我会接受。
    猜你喜欢
    • 2012-05-30
    • 2012-09-24
    • 2019-04-08
    • 2014-06-10
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    相关资源
    最近更新 更多