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