我有一个PHP脚本,需要确定它是通过命令行还是通过HTTP执行的,主要是出于输出格式化的目的。这样做的规范方法是什么?我以为是要检查的SERVER['argc'],但事实证明,即使使用“ Apache 2.0 Handler”服务器API时,它也已被填充。
SERVER['argc']
使用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。
在PHP> = 4.2.0中,还有一个预定义的常量,PHP_SAPI其值与相同php_sapi_name()。
PHP_SAPI