У меня есть сценарий PHP, который должен определить, был ли он выполнен через командную строку или через HTTP, главным образом для целей форматирования вывода. Какой канонический способ сделать это? Я думал, что это нужно для проверки SERVER['argc']
, но оказывается, что это заполнено, даже при использовании серверного API Apache 2.0 Handler.
источник
Это всегда будет работать. (Если версия PHP 4.2.0 или выше)
Что облегчает использование в верхней части ваших скриптов:
источник
CLI or die('not allowed');
CLI or die('not allowed');
это прекрасно.Which makes it easy to use at the top of your scripts
на самом деле не звучит как два отдельных использования. Да, я некромант.Вот реализация Drupal 7: drupal_is_cli () :
Однако Drupal 8 рекомендует использовать
PHP_SAPI === 'cli'
источник
думаю
не будет заполнен из CLI.
Кроме того, все ключи HTTP_ * в суперглобальном файле $ _SERVER не будут заполняться из интерфейса командной строки, или делать это правильно, как только что упомянуто :-)
источник
На странице документации для
php_sapi
_name четко указано, как это работает:Я не уверен, почему Хоп не думает, что PHP предназначен для серьезных программистов (я серьезный программист, и я использую PHP ежедневно), но если он хочет помочь прояснить документацию, то, возможно, он может провести аудит всех возможных веб-серверов на котором может работать PHP и определять имена всех возможных типов интерфейсов для каждого сервера. Просто убедитесь, что этот список обновляется по мере добавления новых веб-серверов и интерфейсов.
Также Бобби сказал:
Описание для примера гласит:
источник