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

StackOverflow https://stackoverflow.com/questions/1042501

Вопрос

Я пробовал что-то вроде $ _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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top