Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何区分http和cli请求?_Php_Http_Request_Command Line Interface - Fatal编程技术网

Php 如何区分http和cli请求?

Php 如何区分http和cli请求?,php,http,request,command-line-interface,Php,Http,Request,Command Line Interface,标题非常直白。我必须知道服务器端的脚本是通过HTTP请求调用的还是通过命令行调用的。我可以检查$\u服务器['argv']或$\u服务器['argc'] 实用的方法是什么?查看中的键。如果是cli请求,则不应看到任何以“HTTP”开头的请求 下面是一些简单的测试代码: <?php foreach( $_SERVER as $k=>$v ){ echo "$k: $v\n"; } ?> 可能正在检查是否未设置$\u服务器['HTTP\u主机]?因为我相信变量是通过

标题非常直白。我必须知道服务器端的脚本是通过HTTP请求调用的还是通过命令行调用的。我可以检查
$\u服务器['argv']
$\u服务器['argc']

实用的方法是什么?

查看中的键。如果是cli请求,则不应看到任何以“HTTP”开头的请求


下面是一些简单的测试代码:

<?php

foreach( $_SERVER as $k=>$v ){
    echo "$k: $v\n";
}

?>

可能正在检查是否未设置
$\u服务器['HTTP\u主机]
?因为我相信变量是通过执行时发送到文件的请求头填充的,命令行可能不发送头。

您可以检查全局变量
$argc
是否已设置。

我建议检查
如果(isset($\u SERVER['SERVER\u NAME'))
但您必须通过http(tcp)发送数据无论如何,无论是从cli还是从浏览器调用脚本



我不确定这是否未设置。可能是这样,尤其是当您远程执行PHP文件时。我认为$\u服务器阵列是为HTTP事务保留的,但您可能是对的。它仍然值得浏览其中的各种成员,因为我确信它们在本地执行和远程执行之间有所不同。+1这是一条路要走。我在检查$\u服务器变量之类的东西时遇到了问题。这一个总是有效的。当你可以只测试一个值时,就不需要循环了。@kemp,OP的问题特别询问了argc的替代方案
aj@mmdev0:~/so$ php cli.php |grep HTTP
aj@mmdev0:~/so$
<?php
echo PHP_SAPI;
echo php_sapi_name();
?>