我需要确定当前对PHP的调用是来自命令行(CLI)还是来自web服务器(在我的情况下,使用mod_php的Apache)。
有什么推荐方法吗?
我需要确定当前对PHP的调用是来自命令行(CLI)还是来自web服务器(在我的情况下,使用mod_php的Apache)。
有什么推荐方法吗?
当前回答
我建议检查是否设置了$_SERVER数组的一些条目。
例如:
if (isset($_SERVER['REQUEST_METHOD'])) {
print "HTTP request\n";
} else {
print "CLI invocation\n";
}
其他回答
Try
isset($_SERVER['REQUEST_METHOD'])
如果设置了,则是在浏览器中。
或者,你可以检查是否
isset($_SERVER['argv'])
但在windows CLI、IDK上可能不是这样。
我喜欢的方法是:
if (array_key_exists('SHELL', $_ENV)) {
echo "Console invocation";
}
else {
echo "HTTP invocation";
}
根据http://jp2.php.net/manual/en/features.commandline.php,只有在从CLI运行时才会设置一些常量。这些常量是STDIN, STDOUT和STDERR。测试其中一个将告诉您它是否处于cli模式
joomla的方式
if (array_key_exists('REQUEST_METHOD', $_SERVER)) die();
有这么多复杂的解决方案。……怎么样?
if($_SERVER['REQUEST_SCHEME']=="http" or $_SERVER['REQUEST_SCHEME']=="https"){
// must be browser :)
}