检测是否从Laravel 5中的命令行运行

时间:2015-03-18 19:07:44

标签: php laravel-5

我有一个用例,如果通过Artisan从命令行运行应用程序(迁移,种子,路由:列表),我们需要修改应用程序流。

在Laravel 4中,这可以这样做:

App::runningInConsole()

Laravel 5中是否有相同的名称?

在这种情况下,不首选使用环境(.env)变量,因为这些命令偶尔需要在生产中运行(指向生产资源),我宁愿避免使用重复(.env.commandline)文件。

4 个答案:

答案 0 :(得分:23)

不确定任何先前版本,但在 Laravel 5.2 中,您仍然可以执行App::runningInConsole(),但文档中未提及。

答案 1 :(得分:13)

您可以使用PHP函数php_sapi_namehttp://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.
}