【发布时间】:2011-02-09 22:16:58
【问题描述】:
我在网络服务器上有一个 PHP 脚本。
此文件由另一个程序通过 shell 调用但它仍然可以由网络服务器运行以响应 HTTP 请求。
脚本如何确定它被调用的方式?
【问题讨论】:
标签: php shell scripting invoke
我在网络服务器上有一个 PHP 脚本。
此文件由另一个程序通过 shell 调用但它仍然可以由网络服务器运行以响应 HTTP 请求。
脚本如何确定它被调用的方式?
【问题讨论】:
标签: php shell scripting invoke
有很多方法;我检查$_SERVER['HTTP_HOST'] 是否为空。我认为技术上正确的方法是看php_sapi_name()是否返回cli
【讨论】:
如果它是从 shell 执行的,那么它不会有 HTTP 标头,因为它不是从 HTTP 协议请求的。
【讨论】:
您可以检查某些环境变量。例如$_SERVER["REQUEST_METHOD"]
if (isset($_SERVER["REQUEST_METHOD"]))
// run by server
祝你好运
【讨论】:
我编写了许多在 shell 和 web 上下文中同时运行的应用程序, 而这一个班轮使它变得容易
function isWEB()
{
return $GLOBALS['argc']===NULL;
}
【讨论】: