我有一个通用脚本,该脚本包含在我的PHPcron文件中以及正在通过浏览器访问的文件中。代码的某些部分,我只需要非cron文件。如何检测执行是从CLI还是通过浏览器执行(我知道可以通过将某些参数与cron文件一起传递来完成,但我无权访问crontab)。还有其他办法吗?
使用php_sapi_name()功能。
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。
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。