Обнаружение при запуске из командной строки в Laravel 5

У меня есть прецедент, когда нам нужно изменить поток приложений, если приложение запускается из командной строки через Artisan (миграции, семплы, маршрут: список).

В Laravel 4 это можно сделать следующим образом:

App::runningInConsole()

Есть ли эквивалент в Laravel 5?

Использование переменных среды (.env) не является предпочтительным в этом случае, поскольку эти команды иногда нужно запускать на производстве (указывая на производственные ресурсы), и я бы предпочел не прибегать к дублированию (.env.commandline) файлы.

Ответ 1

Вы можете использовать функцию PHP php_sapi_name (http://php.net/manual/en/function.php-sapi-name.php), чтобы узнать, был ли запущен script из команды или нет.

В вашем случае вы должны проверить что-то вроде

if (strpos(php_sapi_name(), 'cli') !== false) {
    // Run from command
}

Возможно, вам придется проверить документ, чтобы найти правильное значение для проверки в каждом случае. (Иногда это может различаться, но в принципе всегда должен быть другой вывод из script, запущенного с помощью команды)

Ответ 2

Не уверен в каких-либо предыдущих версиях, но в Laravel 5.2 вы все равно можете сделать App::runningInConsole(), хотя он не упоминается в документации.