2015-02-22 9 views
7

Ich habe die Methode described here versucht, aber das funktioniert nicht auf meiner Laravel 5-Installation.Wie kann ich die Ausgabe von Laravel 5 Artisan Befehl speichern/umleiten?

use Symfony\Component\Console\Output\BufferedOutput; 

Route::get('/test', function() 
{ 
    $output = new BufferedOutput; 

    Artisan::call('testCommand', array(), $output); 

    return $output->fetch(); 
}); 

Mein Befehl;

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

Irgendwelche Vorschläge, was ich falsch machen könnte? Oder hat sich in Laravel 5 etwas verändert?

Antwort

4

ich es geschafft, diese Artisan::output() mit zur Arbeit zu kommen, die die Ausgabe des letzten Befehl zurückgibt.

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

    return Artisan::output(); 
}); 

sollte es für Sie tun.

0

Ich habe das gleiche Problem, ersetzen BufferedOutput mit oldschool PHP machte es für mich arbeiten musste, vielleicht funktioniert es auch für Sie:

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

Funktioniert nicht für mich. Ich benutze die Befehlsshell und PHPUnit und die Ausgabe $ ist immer leer. – Marc

0

Wenn Sie die Befehlszeile Abarbeiten sind, dann können Sie Rohr durch den tee Befehl, um in eine Datei und stdout gleichzeitig zu schreiben.

php artisan <command> | tee <filename>

1

Ich tat dies

php artisan your:command >> output.txt

gut für mich gearbeitet.