Обнаружение при запуске из командной строки в 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()
, хотя он не упоминается в документации.