在PHP中,如何检测执行是从CLI模式还是通过浏览器?

php
2022-08-30 07:29:53

我有一个通用的脚本,我将其包含在我的PHPcron文件和通过浏览器访问的文件中。代码的某些部分,我只需要非cron文件。我如何检测执行是从CLI还是通过浏览器(我知道可以通过使用cron文件传递一些参数来完成,但我无法访问crontab)。还有其他方法吗?


答案 1

使用 php_sapi_name() 函数。

if (php_sapi_name() == "cli") {
    // In cli-mode
} else {
    // Not in cli-mode
}

以下是文档中的一些相关说明:

php_sapi_name — 返回 Web 服务器和 PHP 之间的接口类型

虽然不是详尽无遗的,但可能的返回值包括aolserver,apache,apache2filter,apache2handler,caudium,cgi(直到PHP 5.3),cgi-fcgi,cli,cli-server,continuity,embed,isapi,litespeed,milter,nsapi,phttpd,pi3web,roxen,thttpd,tux和webjames。


答案 2
if(php_sapi_name() == "cli") {
    //In cli-mode
} else {
    //Not in cli-mode
}

推荐