標題簡單明瞭。我必須知道服務器端是否通過HTTP請求或命令行調用腳本。我可以檢查$_SERVER['argv']
或$_SERVER['argc']
。
什麼是務實方式做到這一點?如何區分http和cli請求?
回答
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";
}
?>
這裏是輸出:
[email protected]:~/so$ php cli.php |grep HTTP
[email protected]:~/so$
調用,用於發送數據無當您只能測試一個值時需要循環。 – 2010-01-31 19:35:37
@kemp,OP的問題明確要求argc – 2010-01-31 19:40:54
如果沒有$_SERVER['HTTP_HOST']
設置可能檢查?因爲我相信這個變量是通過請求頭髮送到文件執行時填充的,並且命令行可能不會發送頭文件。
Ha的替代方案,在1秒鐘之內... – 2010-01-31 19:28:14
您可以檢查是否設置了全局變量$argc
。
我建議檢查if(isset($_SERVER['SERVER_NAME']))
我不確定這是不是設置。這可能,特別是如果你正在遠程執行你的PHP文件.. – 2010-01-31 19:29:38
我認爲$ _SERVER數組保留給HTTP事務,但你可能是對的。我認爲它們在本地和遠程執行方面存在差異,所以仍然值得通過其中的各種成員。 – 2010-01-31 19:41:33
- 1. 如何區分使用express的Node.js中的HTTP請求和XML HTTP請求?
- 2. 如何區分來自正常Http請求的Ajax請求?
- 3. 如何區分從HTML表單提交的HTTP請求和從客戶端提交的HTTP請求?
- 4. HTTP請求中的請求行可以區分大小寫?
- 5. 如何分離背景HTTP請求
- 6. 是否可以區分「良好」的http請求和DoS攻擊?
- 7. http請求的HTTP請求
- 8. JSON.stringify和$ http請求
- 9. HTTP請求和GET
- 10. angularjs和$ http請求
- 11. Android多部分http請求
- 12. 如何在json中請求Http請求和響應
- 13. 如何在HTTP請求和cli類對象之間進行通話
- 14. 如何嗅探http請求
- 15. 如何使用http請求
- 16. 如何查找HTTP請求?
- 17. 如何訪問HTTP請求?
- 18. 如何在HTTP請求
- 19. 如何優化http請求
- 20. 如何處理HTTP請求
- 21. 如何取消http請求?
- 22. 區分瀏覽器GUI請求和AJAX請求
- 23. 如何中止HTTP的HTTP請求?
- 24. 如何區分CakePHP中的AJAX GET和AJAX POST請求?
- 25. 如何在Compojure/Ring中區分html和xhr/xml/json請求?
- 26. 如何區分HTTPURLConnection中的請求和響應?
- 27. 兩個http請求之間的區別
- 28. Java HTTP請求緩衝區大小
- 29. HTTP請求和條件2
- 30. fiddler http請求和病毒
幹得好,謝謝。 – erenon 2010-01-31 19:34:22
+1這是要走的路。我在檢查$ _SERVER變量和類似的東西時遇到了問題。這一個始終有效。 – 2010-01-31 19:34:25
+1不知道這個功能,謝謝! – 2010-01-31 19:50:06