如何在CLI模式下使用cgi-fcgi检测

时间:2013-10-08 14:41:35

标签: php apache exec command-line-interface fastcgi

php_sapi_name()在CLI和Web中都返回cgi-fcgi :(

当PHP使用fcgi运行时,有没有可靠的方法来检测脚本当前是否在命令行模式下运行?

编辑:nvm。事实证明我必须运行php-cli可执行文件lol

3 个答案:

答案 0 :(得分:1)

检查$_SERVER$_ENV超全球阵列。

尝试$_SERVER['REMOTE_ADDR']或$ _SERVER ['argc']。

我找到了一个很好的答案表格https://stackoverflow.com/a/12654906/1197702

function drupal_is_cli() {
  return (!isset($_SERVER['SERVER_SOFTWARE']) && (php_sapi_name() == 'cli' || (is_numeric($_SERVER['argc']) && $_SERVER['argc'] > 0)));
}

答案 1 :(得分:1)

试试这个。你是否有区别:

if (defined('PHP_SAPI')) {
  echo PHP_SAPI;
}

答案 2 :(得分:0)

这对我来说很有用: Debian 7,Apache 2.2,PHP 5.4.4-14 + deb7u7(cgi-fcgi)& PHP 5.4.4-14 + deb7u7(cli)

function is_cli() 
{
    return (
        !array_key_exists('SERVER_SOFTWARE', $_SERVER)
        && (php_sapi_name() === 'cli' || !array_key_exists('REMOTE_ADDR', $_SERVER))
    );
}