我有一个PHP脚本,它需要确定它是通过命令行还是通过HTTP执行的,主要是出于输出格式化的目的.做这件事的规范方式是什么?我原以为它是判断SERVER['argc']
个,但结果发现这是填充的,即使在使用"Apache2.0Handler"服务器API时也是如此.
我有一个PHP脚本,它需要确定它是通过命令行还是通过HTTP执行的,主要是出于输出格式化的目的.做这件事的规范方式是什么?我原以为它是判断SERVER['argc']
个,但结果发现这是填充的,即使在使用"Apache2.0Handler"服务器API时也是如此.
使用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(直到PHP5.3)、cgi fcgi、cli、cli服务器、连续性、嵌入、isapi、litespeed、milter、nsapi、phttpd、pi3web、roxen、thttpd、tux和webjames.
In PHP >= 4.2.0, there is also a predefined constant, PHP_SAPI
, that has the same value as php_sapi_name()
.