0

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

当 PHP 与 fcgi 一起运行时,是否有任何可靠的方法来检测脚本当前是否在命令行模式下运行?

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

4

3 回答 3

1

尝试这个。是否有区别:

if (defined('PHP_SAPI')) {
  echo PHP_SAPI;
}
于 2013-10-08T15:23:25.150 回答
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)));
}
于 2013-10-08T15:18:36.620 回答
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))
    );
}
于 2014-06-04T16:54:24.567 回答