Название тихое. Я должен знать на стороне сервера, если скрипт вызвал HTTP-запрос или по командной строке. Я мог бы изучить $_SERVER['argv']
или $_SERVER['argc']
.
Каков прагматичный способ сделать это?
http://us3.php.net/manual/en/function.php-sapi-name.php
<?php echo PHP_SAPI; echo php_sapi_name(); ?>
Посмотрите на ключи в $ _SERVER . Если это запрос cli, вы не должны видеть, что начните с «HTTP».
Вот несколько простых тестовых кодов:
<?php foreach( $_SERVER as $k=>$v ){ echo "$k: $v\n"; } ?>
И вот вывод:
aj@mmdev0:~/so$ php cli.php |grep HTTP aj@mmdev0:~/so$
Возможно, проверяется, не установлено ли значение $_SERVER['HTTP_HOST']
? Потому что я считаю, что переменная заполняется через заголовки запроса, отправленные в файл на выходе, и в командной строке, вероятно, не отправляются заголовки.
Вы можете проверить, установлена ли глобальная переменная $argc
.
Я предлагаю проверить if(isset($_SERVER['SERVER_NAME']))
Но вы должны отправлять данные через http (tcp) в любом случае независимо от того, вызван ли сценарий из cli или из браузера