Как дифференцироваться между запросами cli и http?

Заголовок тих простой. Я должен знать на стороне сервера если сценарий, названный через Запрос HTTP или командной строкой. Я мог исследовать $_SERVER['argv'] или $_SERVER['argc'].
Что прагматический путь состоит в том, чтобы сделать это?

10
задан erenon 31 January 2010 в 19:32
поделиться

6 ответов

http://us3.php.net/manual/en/function.php-sapi-name.php

<?php
echo PHP_SAPI;
echo php_sapi_name();
?>
12
ответ дан 3 December 2019 в 22:37
поделиться

Возможно, проверяется, не установлен ли $ _ SERVER ['HTTP_HOST'] ? Потому что я считаю, что эта переменная заполняется через заголовки запроса, отправляемые в файл при выполнении, и командная строка, вероятно, не отправляет заголовки.

1
ответ дан 3 December 2019 в 22:37
поделиться

, но вы должны отправить данные через http (tcp) в любом случае Если скрипт вызывается из CLI или из браузера

0
ответ дан 3 December 2019 в 22:37
поделиться

Я предлагаю проверять , если (Isset ($ _ Server ['server_name']))

0
ответ дан 3 December 2019 в 22:37
поделиться

Посмотрите на ключи в $ _ Server . Если это запрос CLI, вы не должны видеть, что начнутся с «http».


Вот несколько простых тестовых кодов:

<?php

foreach( $_SERVER as $k=>$v ){
    echo "$k: $v\n";
}

?>

и вот вывод:

aj@mmdev0:~/so$ php cli.php |grep HTTP
aj@mmdev0:~/so$
2
ответ дан 3 December 2019 в 22:37
поделиться

Вы можете проверить, устанавливается ли глобальная переменная $ ARGC .

0
ответ дан 3 December 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: