Как определить, запущен ли скрипт в консоли?
Корректный метод определения способа запуска скрипта вглядит так:
$is_console = PHP_SAPI == 'cli' || (!isset($_SERVER['DOCUMENT_ROOT']) && !isset($_SERVER['REQUEST_URI']));Константа PHP_SAPI
PHP_SAPI (string) — Серверное API данной сборки PHP. В данной константе хранится то же значение, что возвращает функция php_sapi_name().
php_sapi_name()
(PHP 4 >= 4.0.1, PHP 5, PHP 7)string php_sapi_name ( void ) — Возвращает тип интерфейса между веб-сервером и PHP
Описание
Возвращает строку в нижнем регистре, содержащую описание типа интерфейса (Server API, SAPI) которым пользуется PHP. Например, в CLI PHP эта строка примет значение "cli", в то время как с Apache может быть несколько разных значений в зависимости от конкретного SAPI.
Возвращаемые значения
Возвращает тип интерфейса в виде строки в нижнем регистре.
Возможные возвращаемые значения (список может быть неполным): aolserver, apache, apache2filter, apache2handler, caudium, cgi (до PHP 5.3), cgi-fcgi, cli, cli-server, continuity, embed, fpm-fcgi, isapi, litespeed, milter, nsapi, phttpd, pi3web, roxen, thttpd, tux, и webjames.
Пример
<?php
$sapi_type = php_sapi_name();
if (substr($sapi_type, 0, 3) == 'cgi') {
echo "Вы используете CGI PHP\n";
} else {
echo "Вы используете не CGI PHP\n";
}
?>