У меня есть общий script, который Im включает в мои файлы PHPcron и файлы, которые просматриваются через браузер. Некоторая часть кода мне нужна только для файлов non cron. Как я могу определить, выполняется ли выполнение из CLI или через браузер (я знаю, что это можно сделать, передав некоторые аргументы с cron файлами, но у меня нет доступа к crontab). Есть ли другой способ?
В PHP, как обнаружить выполнение из режима CLI или через браузер?
Ответ 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
}