如何使用PHP检查脚本是从控制台还是浏览器请求运行的?

2022-08-30 10:36:42

我尝试了像$_ENV['CLIENTNAME'] == 'Console'这样的东西,但这似乎只适用于某些操作系统(在Windows中工作,而不是linux)。

我试过!empty($_ENV['SHELL']),但这并不总是有效...

有没有办法检查这一点,这将适用于所有操作系统/环境?


答案 1

使用 php_sapi_name()

返回一个小写字符串,该字符串描述 PHP 正在使用的接口类型(服务器 API,SAPI)。例如,在CLI PHP中,此字符串将为“cli”,而对于Apache,它可能具有几个不同的值,具体取决于所使用的确切SAPI。

例如:

$isCLI = (php_sapi_name() == 'cli');

您还可以使用常量PHP_SAPI


答案 2

检查 http://php.net/manual/en/features.commandline.php#105568“PHP_SAPI”常量

<?php
if (PHP_SAPI === 'cli')
{
   // ...
}
?> 

推荐