[英]Should PHAR createDefaultStub differentiate between CLI and browser?
[英]How to differentiate between http and cli requests?
標題很安靜直截了當。 我必須在服務器端知道腳本是通過HTTP請求還是通過命令行調用的。 我可以檢查$_SERVER['argv']
或$_SERVER['argc']
。
這樣做的實用方法是什么?
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";
}
?>
這是輸出:
aj@mmdev0:~/so$ php cli.php |grep HTTP
aj@mmdev0:~/so$
可能檢查是否設置了$_SERVER['HTTP_HOST']
? 因為我相信變量是通過在執行時發送到文件的請求標頭填充的,並且命令行可能不會發送標頭。
您可以檢查是否設置了全局變量$argc
。
我建議檢查if(isset($_SERVER['SERVER_NAME']))
但無論是從cli還是從瀏覽器調用腳本,您都必須通過http(tcp)發送數據
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.