Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.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/0/drupal/3.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 如何知道通过cli或apache2handler调用的curl文件_Php_Curl_Command Line Interface - Fatal编程技术网

Php 如何知道通过cli或apache2handler调用的curl文件

Php 如何知道通过cli或apache2handler调用的curl文件,php,curl,command-line-interface,Php,Curl,Command Line Interface,我有调用cli.php 我通过命令行执行它 call-cli.php的代码 step1.php的代码 当管理员通过浏览器运行step1.php时,它应该执行apache2handler代码,对于cli则执行diff代码。 我从call cli.php获取productId。因此,我需要从调用cli.php调用curl 因此,我想知道是否有任何方法可以通过cli文件返回cli而不是apache2handler或任何其他建议来查找curl?否,因为curl通过web服务器处理的HTTP打开step1

我有调用cli.php

我通过命令行执行它

call-cli.php的代码

step1.php的代码

当管理员通过浏览器运行step1.php时,它应该执行apache2handler代码,对于cli则执行diff代码。 我从call cli.php获取productId。因此,我需要从调用cli.php调用curl
因此,我想知道是否有任何方法可以通过cli文件返回cli而不是apache2handler或任何其他建议来查找curl?

否,因为curl通过web服务器处理的HTTP打开
step1.php
文件,就像浏览器一样。在本例中是Apache,因此它是
apache2handler


但是PHP脚本只有在从终端执行时才会输出
cli

调用cli.PHP中的curl调用是通过cli调用curl的,但是由于您是在回显通过Apache提供服务的
step1.PHP
的结果,因此您可以在代码中看到
apache2handler

如果通过命令行调用
step1.php
(例如
php step1.php
),您将看到它还返回
cli


不确定你想达到什么目的,请澄清你的问题。

你实际上问了什么还不清楚。但是我知道您在
step1
中返回了第二个结果,这对您来说是意外的?为什么要返回
cli
?curl通过http请求调用了它,该请求肯定不会在
cli
上执行。。。为此,您必须使用类似于
exec()
的方法,而不是
curl()
。@arkascha谢谢您的观点,希望更新的问题很清楚。您使用了错误的策略来区分两个不同的调用,因为这两个调用都是在同一环境中执行的。你可以做的是以下两个选择之一:1。在
curl
调用中添加一个请求参数,该参数允许在接收端有所不同,或者使用http请求头,也可以在被请求端进行检查。是的@arkascha我认为是相同的解决方案,但我担心安全点,所以移到cli…谢谢!你为什么不把两个不同的文件放在一起?一个用于cli使用,一个用于管理web使用?是的,我知道,但对于productId,我需要从call-cli.php调用它。希望更新的问题是清楚的。谢谢@Niraj Shah,我知道,但对于productId,我需要从call-cli.php调用它。希望更新的问题很清楚。只是一个细节,但是:url()`call in
call cli.php
不是通过cli调用
cURL
可执行文件!它是对加载到php中的
cURL
扩展库的内部函数调用。
echo "File 1 ".php_sapi_name(); // returns cli
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/curltest/step1.php?productId=12");
$response = curl_exec($ch);
curl_close($ch);
echo " step1 ".php_sapi_name(); // returns apache2handler
if(php_sapi_name()==='cli') {
    // To do execute code regarding cli
}
if(php_sapi_name()==='apache2handler') {
    // To do execute code regarding apache2handler
}