2015-02-22 23 views
7

Tôi đã thử phương pháp described here nhưng điều này không hoạt động trên cài đặt Laravel 5 của tôi.Làm thế nào để lưu/chuyển hướng đầu ra từ lệnh Laravel 5 Artisan?

use Symfony\Component\Console\Output\BufferedOutput; 

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

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

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

lệnh của tôi;

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

Bất kỳ đề xuất nào tôi có thể làm sai? Hay là nó đã thay đổi trong Laravel 5?

Trả lời

4

tôi quản lý để có được điều này để làm việc sử dụng Artisan::output(), mà trả về đầu ra của lệnh mới nhất.

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

    return Artisan::output(); 
}); 

nên làm điều đó cho bạn.

0

Tôi đã có cùng một vấn đề, thay thế BufferedOutput với PHP oldschool đã làm cho nó làm việc cho tôi, có lẽ nó làm việc cho bạn quá:

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

Không hiệu quả đối với tôi. Tôi đang sử dụng lệnh shell và PHPUnit và đầu ra $ luôn rỗng. – Marc

0

Nếu bạn đang làm việc ngoài khơi dòng lệnh sau đó bạn có thể đường ống thông qua lệnh tee để ghi vào một tệp và stdout cùng một lúc.

php artisan <command> | tee <filename>

1

Tôi đã làm điều này

php artisan your:command >> output.txt

làm việc tốt cho tôi.

Các vấn đề liên quan