标题很简单明了。我必须在服务器端知道脚本是通过 HTTP 请求还是通过命令行调用的。我可以检查$_SERVER['argv']
or $_SERVER['argc']
。
这样做的务实方法是什么?
问问题
3783 次
6 回答
14
http://us3.php.net/manual/en/function.php-sapi-name.php
<?php
echo PHP_SAPI;
echo php_sapi_name();
?>
于 2010-01-31T19:29:23.860 回答
2
查看$_SERVER中的键。如果是 cli 请求,您应该看不到任何以“HTTP”开头的请求。
下面是一些简单的测试代码:
<?php
foreach( $_SERVER as $k=>$v ){
echo "$k: $v\n";
}
?>
这是输出:
aj@mmdev0:~/so$ php cli.php |grep HTTP
aj@mmdev0:~/so$
于 2010-01-31T19:27:25.017 回答
1
可能检查是否$_SERVER['HTTP_HOST']
设置了否?因为我相信该变量是通过在执行时发送到文件的请求标头填充的,并且命令行可能不会发送标头。
于 2010-01-31T19:27:26.837 回答
0
您可以检查是否$argc
设置了全局变量。
于 2010-01-31T19:28:03.093 回答
0
我建议检查if(isset($_SERVER['SERVER_NAME']))
于 2010-01-31T19:28:22.500 回答
0
但是无论脚本是从 cli 还是从浏览器调用,您都必须通过 http (tcp) 发送数据
于 2010-01-31T19:29:11.957 回答