我有一个用例,如果通过Artisan从命令行运行应用程序(迁移,种子,路由:列表),我们需要修改应用程序流。
在Laravel 4中,这可以这样做:
App::runningInConsole()
Laravel 5中是否有相同的名称?
在这种情况下,不首选使用环境(.env)变量,因为这些命令偶尔需要在生产中运行(指向生产资源),我宁愿避免使用重复(.env.commandline)文件。
答案 0 :(得分:23)
不确定任何先前版本,但在 Laravel 5.2 中,您仍然可以执行App::runningInConsole()
,但文档中未提及。
答案 1 :(得分:13)
您可以使用PHP函数php_sapi_name
(http://php.net/manual/en/function.php-sapi-name.php)来确定脚本是否是从命令启动的。
在您的情况下,您应该检查类似
的内容if (strpos(php_sapi_name(), 'cli') !== false) {
// Run from command
}
您可能必须检查文档以找到在每种情况下检查的正确值。 (有时可能会有所不同,但基本上应该总是有一个与通过命令启动的脚本不同的输出)
答案 2 :(得分:6)
从Laravel 5.1开始,此功能... $app->runningInConsole()
https://laravel.com/api/5.1/Illuminate/Foundation/Application.html
基本用法:
if (! $app->runningInConsole()) {
// do something
}
答案 3 :(得分:0)
任何人都可以使用laravel app()
帮助函数来避免任何与名称空间相关的问题。因此,要检查脚本是否在cli或浏览器中运行,可以使用此行代码app()->runningInConsole()
基本用法:
if ( app()->runningInConsole() ){
// it's console.
}