簡體   English   中英

如何區分http和cli請求?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM