VDS за 300р от нашего партнера SpaceWeb
[89]
08 Ноя 2013, 12:41

Определить запущен ли скрипт через консоль

Привет!

Как в PHP определить, что скрипт был запущен через консоль или же под управлением web-сервер?
Видел что проверяют HTTP_USER_AGENT и REMOTE_ADDR, но на мой взгляд не совсем правильно проверять HTTP заголовки.

#php

Комментарии (1)
grom 09.11.2013 12:58

Я использую такой подход:

function is_cli()
{
return defined('STDIN') || (substr(PHP_SAPI, 0, 3) == 'cgi' && getenv('TERM'));
}

Первое это проверяем определена ли константа STDIN, которая определена только в режиме командной строки. Но эта проверка работает, если PHP был запущен с использованием интерфейса SAPI CLI. Иногда PHP может быть запущен с использованием SAPI CGI и тогда проверка STDIN может всегда давать ложный результат.

Поэтому для проверки, не запущен ли PHP через CGI интерфейс, проверяем константу PHP_SAPI на наличие в ней подстроки «cgi». Но она может содержать значение cgi и если скрипт просто является cgi сценарием и запущен через тот же браузер. Так что следует проверить переменную окружения TERM которая определяет тип терминала.
+3

Добавить комментарий

Войдите, чтобы написать о чем-нибудь...
Вход Регистрация
Web.onRails
Здесь вы можете спросить или написать обо всём, что касается Веб-разработки.
написать о чем-нибудь...
Метки:
Лучшее
[52]
16 Окт 2011, 15:38
Вывести все элементы POST
[просмотров 13449]
[74]
31 мая 2011, 11:48
Python проверка существования переменной
[просмотров 9220]
[4]
10 Окт 2018, 15:33
Как запретить просмотр сайта по IP?
[просмотров 8834]
[100]
19 Дек 2014, 16:16
User-agent для Internet Explorer 11
[просмотров 8159]
[124]
21 Июл 2011, 14:04
Python Imaging Library (PIL)
[просмотров 6816]
[58]
29 мая 2012, 12:08
Узнать версию PHP из командной строки
[просмотров 4939]
[315]
16 Июл 2011, 20:03
Python работа с MySQL
[просмотров 4902]

Вести с Хабра