Como verificar se o Laravel está sendo executado pela linha de comando (CLI) ou pela WEB?

Pode haver momentos em que você precise saber se uma requisição para seu aplicativo Laravel está vindo do CLI (linha de comando) ou pela web. Por exemplo, como para criar um determinado log que seja gerado apenas se aplicação estiver sendo executada pela linha de comando? Ou talvez, o contrário disso?

O Laravel fornece uma solução para esse problema...

Utilizando o método app()->runningInConsole()

Para identificar se uma aplicação é executada pela linha de comando, você pode utilizar o método app()->runningInConsole() . Esse método retorna true caso a aplicação esteja rodando no em modo CLI, e false caso esteja rodando pela web.

Tomando por exemplo, você poderia adicionar o seguinte código abaixo no seu script AppServiceProvider e fazer a chamada de php artisan

Assim, ao executar o comando php artisan, um log seria escrito no arquivo de logs do Laravel.

if (app()->runningInConsole()) {
    \Log::info($_ENV);
}


Se você precisasse fazer o contrário, ou seja, executar o log acima apenas quando estivesse executando sua aplicação Laravel pela web, basta fazer utilizar o operador de negação em app()->runningInConsole()

if (! app()->runningInConsole()) {
    \Log::info('Eu fui executado a partir da web');
}

Conclusão

Se você chegar a uma situação em que precisa saber onde seu aplicativo está sendo executado, lembre-se disso. É uma excelente maneira de utilizar os auxiliares internos do Laravel para manter seu código limpo e fácil de ler.