Как проверить с помощью PHP, если script запускается из консоли или запроса браузера?
Я пробовал такие вещи, как $_ENV ['CLIENTNAME'] == 'Консоль', но, похоже, работает только с определенной ОС (работает в Windows, а не в Linux).
Я попытался! Пусто ($ _ ENV ['SHELL]), но это тоже не работает...
Есть ли способ проверить это, что будет работать во всех ОС/средах?
Спасибо!
Ответы
Ответ 1
Используйте php_sapi_name()
Возвращает строчную строку, которая описывает тип интерфейса ( Server API, SAPI), который использует PHP. Например, в CLI PHP эта строка будет "cli", тогда как с Apache it может иметь несколько разных значений в зависимости от точного SAPI.
Например:
$isCLI = ( php_sapi_name() == 'cli' );
Вы также можете использовать константу PHP_SAPI
Ответ 2
Я знаю, что это старый вопрос, но для записи я вижу HTTP-запросы, входящие без заголовка User-Agent, и PHP в этом случае автоматически не определяет HTTP_USER_AGENT.
Ответ 3
Проверьте http://php.net/manual/en/features.commandline.php#105568
Константа "PHP_SAPI"
<?php
if (PHP_SAPI === 'cli')
{
// ...
}
?>
Ответ 4
if ($argc > 0) {
// Command line was used
} else {
// Browser was used
}
$argc сопоставляет количество аргументов, переданных в командную строку.
Просто используя php page.php, $argc вернет 1
Вызов page.php с браузером, $argc вернет NULL
Ответ 5
Одним из решений является проверка определения STDIN:
if (!defined("STDIN")) {
die("Please run me from the console - not from a web-browser!");
}
Ответ 6
Проверьте HTTP_USER_AGENT, он должен существовать в http-запросе