【问题标题】:How can a PHP script detect if it has been invoked as a script or from the shell?PHP 脚本如何检测它是作为脚本调用还是从 shell 调用?
【发布时间】:2011-02-09 22:16:58
【问题描述】:

我在网络服务器上有一个 PHP 脚本。

此文件由另一个程序通过 shell 调用它仍然可以由网络服务器运行以响应 HTTP 请求。

脚本如何确定它被调用的方式?

【问题讨论】:

    标签: php shell scripting invoke


    【解决方案1】:

    有很多方法;我检查$_SERVER['HTTP_HOST'] 是否为空。我认为技术上正确的方法是看php_sapi_name()是否返回cli

    【讨论】:

    • 是的,这可能是最好的方法。
    【解决方案2】:

    如果它是从 shell 执行的,那么它不会有 HTTP 标头,因为它不是从 HTTP 协议请求的。

    【讨论】:

      【解决方案3】:

      您可以检查某些环境变量。例如$_SERVER["REQUEST_METHOD"]

      if (isset($_SERVER["REQUEST_METHOD"]))
         // run by server
      

      祝你好运

      【讨论】:

        【解决方案4】:

        我编写了许多在 shell 和 web 上下文中同时运行的应用程序, 而这一个班轮使它变得容易

        function isWEB()
                 {
                 return $GLOBALS['argc']===NULL;
                 }
        

        【讨论】:

          猜你喜欢
          • 2010-12-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-10
          • 1970-01-01
          • 2012-08-30
          • 2016-06-22
          相关资源
          最近更新 更多