Подтвердить что ты не робот

Как проверить с помощью PHP, если script запускается из консоли или запроса браузера?

Я пробовал такие вещи, как $_ENV ['CLIENTNAME'] == 'Консоль', но, похоже, работает только с определенной ОС (работает в Windows, а не в Linux).

Я попытался! Пусто ($ _ ENV ['SHELL]), но это тоже не работает...

Есть ли способ проверить это, что будет работать во всех ОС/средах?

Спасибо!

4b9b3361

Ответ 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.

Ответ 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-запросе