Laravel,从 php 调用 Artisan 不同于命令行

Laravel, call Artisan from php differs from command line

我有一个调用 Artisan facade 来执行的路由:

Artisan::call('queue:work --once');

然后我得到:

但这很奇怪,因为在命令行中,如果我这样做:

php artisan queue:work --once

一切正常:

我可以使用其他路由来调用例如:

Artisan::call('config:clear');

并且工作正常。有什么想法吗?

以--开头的选项值未传递给字符串 你可以试试 :

Artisan::call('queue:work', ['--once' => true]); 

要从代码中调用 artisan 命令并传递一些选项,您需要将数组用作 Artisan::call()

的第二个参数

像这样:

Artisan::call('queue:work', ['--once' => true]); // or whatever options you need

Laravel 5.8 介绍了这种调用 artisan 命令的新方法:

Artisan::call('queue:work --once');

在以前的版本中使用这个:

Artisan::call('queue:work', ['--once' => true]);