标题很安静直截了当。我必须在服务器端知道脚本是通过HTTP请求还是通过命令行调用的。我可以检查$_SERVER['argv']
或$_SERVER['argc']
什么是实用方式?
答案 0 :(得分:12)
http://us3.php.net/manual/en/function.php-sapi-name.php
<?php
echo PHP_SAPI;
echo php_sapi_name();
?>
答案 1 :(得分: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$
答案 2 :(得分:1)
可能检查是否设置了$_SERVER['HTTP_HOST']
?因为我相信变量是通过在执行时发送到文件的请求标头填充的,并且命令行可能不会发送标题。
答案 3 :(得分:0)
您可以检查是否设置了全局变量$argc
。
答案 4 :(得分:0)
我建议检查if(isset($_SERVER['SERVER_NAME']))
答案 5 :(得分:0)
但无论是从cli还是从浏览器调用脚本,你都必须通过http(tcp)发送数据