Php 如何知道通过cli或apache2handler调用的curl文件
我有调用cli.php 我通过命令行执行它 call-cli.php的代码 step1.php的代码 当管理员通过浏览器运行step1.php时,它应该执行apache2handler代码,对于cli则执行diff代码。 我从call cli.php获取productId。因此,我需要从调用cli.php调用curlPhp 如何知道通过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文件返回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 incall 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
}