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

Detect if running from the command line in Laravel 5

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

在 Laravel 4 中可以这样做:

App::runningInConsole()

在Laravel 5中是否有等价物?

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

您可以使用 PHP 函数 php_sapi_name (http://php.net/manual/en/function.php-sapi-name.php),查明脚本是否从命令启动。

在你的情况下,你应该检查类似

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

尽管如此,您可能必须查看文档以找到正确的值以在每种情况下进行检查。 (有时可能会有所不同,但基本上通过命令启动的脚本应该总是有不同的输出)

不确定任何以前的版本,但在 Laravel 5.2 中你仍然可以做 App::runningInConsole() 尽管文档中没有提到它。

从 Laravel 5.1 开始,这有效... $app->runningInConsole() https://laravel.com/api/5.1/Illuminate/Foundation/Application.html

基本用法:

if (! $app->runningInConsole()) {
 // do something
}

任何人都可以使用 laravel app() 辅助函数来避免任何与名称空间相关的问题。因此,要检查脚本在 cli 或浏览器中是否为 运行,可以使用这行代码 app()->runningInConsole()

基本用法:

if ( app()->runningInConsole() ){
    // it's console.
}