php_sapi_name()
在CLI和Web中都返回cgi-fcgi
:(
当PHP使用fcgi运行时,有没有可靠的方法来检测脚本当前是否在命令行模式下运行?
编辑:nvm。事实证明我必须运行php-cli
可执行文件lol
答案 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))
);
}