【发布时间】:2010-01-31 19:23:32
【问题描述】:
标题简单明了。我必须在服务器端知道脚本是通过 HTTP 请求还是通过命令行调用的。我可以检查$_SERVER['argv'] 或$_SERVER['argc']。
这样做的务实方法是什么?
【问题讨论】:
标签: php http request command-line-interface
标题简单明了。我必须在服务器端知道脚本是通过 HTTP 请求还是通过命令行调用的。我可以检查$_SERVER['argv'] 或$_SERVER['argc']。
这样做的务实方法是什么?
【问题讨论】:
标签: php http request command-line-interface
http://us3.php.net/manual/en/function.php-sapi-name.php
<?php
echo PHP_SAPI;
echo php_sapi_name();
?>
【讨论】:
查看$_SERVER 中的键。如果是 cli 请求,您应该看不到任何以“HTTP”开头的内容。
下面是一些简单的测试代码:
<?php
foreach( $_SERVER as $k=>$v ){
echo "$k: $v\n";
}
?>
这是输出:
aj@mmdev0:~/so$ php cli.php |grep HTTP
aj@mmdev0:~/so$
【讨论】:
可能检查是否没有设置$_SERVER['HTTP_HOST']?因为我相信该变量是通过在执行时发送到文件的请求标头填充的,而命令行可能不会发送标头。
【讨论】:
您可以检查是否设置了全局变量$argc。
【讨论】:
我建议检查if(isset($_SERVER['SERVER_NAME']))
【讨论】:
但是无论脚本是从 cli 还是从浏览器调用,您都必须通过 http (tcp) 发送数据
【讨论】: