Как да откриете дали е в CLI режим с cgi-fcgi

php_sapi_name() връща cgi-fcgi както в CLI, така и в уеб :(

Има ли някакъв надежден начин да се установи дали скриптът работи в режим на команден ред, когато PHP работи с fcgi?

редактиране: nvm. оказа се, че трябва да стартирам изпълнимия файл php-cli хаха


person thelolcat    schedule 08.10.2013    source източник


Отговори (3)


Проверете суперглобалните масиви $_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)));
}
person iodragon    schedule 08.10.2013

Опитайте тази. Независимо дали имате разлика:

if (defined('PHP_SAPI')) {
  echo PHP_SAPI;
}
person AterCattus    schedule 08.10.2013

Това работи за мен на тази кутия: 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))
    );
}
person Volodymyr Chumak    schedule 04.06.2014