2017-03-02 70 views
0

稱爲捲曲的文件我有呼叫cli.php怎麼知道通過CLI或apache2handler

我通過命令行執行它。呼叫cli.php的

代碼

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); 

step1.php的代碼

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 
} 

當通過瀏覽器管理員身份運行step1.php應該執行apache2handler代碼和cli diff的一個。 我從呼叫cli.php得到的productId。所以,我需要從呼叫cli.php 所以我想知道調用捲曲有沒有辦法找到通過CLI文件的回報捲曲所謂的CLI而不是apache2handler或其他任何建議嗎?

+0

這實際上有點不清楚。但我知道你在step1中選擇了第二個結果,這對你來說是意想不到的,爲什麼要返回'cli'呢?它通過由捲曲的HTTP請求被調用,肯定是_not_執行的請求'cli' ......你不得不使用像'EXEC()'爲,而不是'捲曲()'... – arkascha

+0

@arkascha感謝你的觀點,希望更新的問題是明確的。 –

+0

由於兩者在相同的環境中執行,因此您在兩種不同的調用之間使用了錯誤的策略。你可以做的是做以下兩個選擇之一:1.向'curl'調用添加請求參數,它允許在接收端有所不同,或者使用http請求頭,這也可以在請求端進行檢查。 – arkascha

回答

0

不,捲曲打開step1.php文件就像通過HTTP瀏覽器是由Web服務器處理。 Apache在這種情況下,因此它是apache2handler

但PHP腳本將只輸出cli如果從終端執行。

+0

是的我知道但是對於productId我需要從call-cli.php中調用它。希望更新的問題很明確。 –

0

call-cli.php中的捲曲調用通過cli調用curl,但由於您迴應的是通過Apache提供的step1.php的結果,因此您在代碼中看到apache2handler

如果您通過命令行調用step1.php(例如php step1.php),您將看到它也會返回cli

不知道你想什麼來實現的,因此,請澄清你的疑問。

+0

謝謝@Niraj Shah我知道但是對於productId,我需要從call-cli.php調用它。希望更新的問題很明確。 –

+0

只是一個細節,但是:'call-cli.php'中的url()'調用不會通過CLI完成到'cURL'可執行文件!這是一個對加載到php中的'cURL'擴展庫的內部函數調用。 – arkascha