В PHP, как обнаружить выполнение из режима CLI или через браузер?

У меня есть общий script, который Im включает в мои файлы PHPcron и файлы, которые просматриваются через браузер. Некоторая часть кода мне нужна только для файлов non cron. Как я могу определить, выполняется ли выполнение из CLI или через браузер (я знаю, что это можно сделать, передав некоторые аргументы с cron файлами, но у меня нет доступа к crontab). Есть ли другой способ?

Ответ 1

Используйте php_sapi_name().

if (php_sapi_name() == "cli") {
    // In cli-mode
} else {
    // Not in cli-mode
}

Вот некоторые важные примечания из документов:

php_sapi_name - возвращает тип интерфейса между веб-сервером и PHP

Хотя и не исчерпывающий, возможные возвращаемые значения включают aolserver, apache, apache2filter, apache2handler, caudium, cgi (до PHP 5.3), cgi-fcgi, cli, cli-server, непрерывность, встраивание, isapi, litespeed, milter, nsapi, phttpd, pi3web, roxen, thttpd, tux и webjames.

Ответ 2

if(php_sapi_name() == "cli") {
    //In cli-mode
} else {
    //Not in cli-mode
}

Ответ 3

Существует константа PHP_SAPI имеет то же значение, что и php_sapi_name().

(доступно в PHP >= 4.2.0)

Ответ 4

Я думаю, вы можете видеть это из переменных $_SERVER. Попробуйте распечатать массив $_SERVER для браузера и CLI, и вы должны увидеть различия.

Ответ 5

Вы можете использовать:

if (isset($argc))
{
    // CLI
}
else
{
    // NOT CLI
}