Eu tenho um script PHP que precisa determinar se foi executado via linha de comando ou via HTTP, principalmente para fins de formatação de saída. Qual é a maneira canônica de fazer isso? Eu pensei que era para inspecionar SERVER['argc']
, mas acontece que isso é preenchido, mesmo ao usar a API do servidor 'Apache 2.0 Handler'.
fonte
Isso sempre funcionará. (Se a versão do PHP for 4.2.0 ou superior)
O que facilita o uso na parte superior de seus scripts:
fonte
CLI or die('not allowed');
CLI or die('not allowed');
é perfeito.Which makes it easy to use at the top of your scripts
realmente não soa como dois usos separados. Sim, sou um necromante.Aqui está a implementação do Drupal 7: drupal_is_cli () :
No entanto, o Drupal 8 recomenda o uso de
PHP_SAPI === 'cli'
fonte
eu acho que
não será preenchido a partir da CLI.
Além disso, todas as chaves HTTP_ * na superglobal $ _SERVER não serão preenchidas a partir da CLI, ou farão da maneira correta o salto que acabamos de mencionar :-)
fonte
A página de documentação para
php_sapi
_name indica claramente como funciona:Não sei por que o hop não pensa que o PHP é para programadores sérios (sou um programador sério e uso o PHP diariamente), mas se ele quiser ajudar a esclarecer a documentação, talvez possa auditar todos os servidores da Web possíveis que o PHP possa executar e determinar os nomes de todos os tipos de interface possíveis para cada servidor. Apenas certifique-se de manter essa lista atualizada à medida que novos servidores e interfaces da Web forem adicionados.
Além disso, Bobby disse:
A descrição para o exemplo afirma:
fonte