如何保存/重定向Laravel 5 Artisan命令的输出


How to save/redirect output from Laravel 5 Artisan command?

我尝试过这里描述的方法,但这在我的Laravel 5安装中不起作用。

use Symfony'Component'Console'Output'BufferedOutput;
Route::get('/test', function()
{
    $output = new BufferedOutput;
    Artisan::call('testCommand', array(), $output);
    return $output->fetch();
});

我的命令;

public function fire()
{
    $this->info('No output visible');
}

有什么建议我可能做错什么吗?或者是在《拉拉威尔5》中发生了什么变化?

我使用Artisan::output()成功地实现了这一点,它返回了最新命令的输出。

Route::get('/test', function()
{    
    Artisan::call('testCommand', array());
    return Artisan::output();
});

应该为你做这件事。

我做了这个

php artisan your:command >> output.txt

对我来说效果很好。

如果您在命令行外工作,则可以通过管道传输tee命令,同时写入文件和stdout

php artisan <command> | tee <filename>

我也遇到过同样的问题,用老式PHP替换BufferedOutput让它对我有效,也许它也对你有效:

Route::get('/test', function()
{
    ob_start();
    Artisan::call('testCommand');
    $output = ob_get_clean();
    return $output;
});