Я использую следующий код для перенаправления вывода команды artisan в маршрут.
use Symfony\Component\Console\Output\BufferedOutput; Route::get('/restart', function() { $output = new BufferedOutput; Artisan::call('remote:restart', array(), $output); return $output->fetch(); });
Это работает в большинстве случаев. Однако если в команде я использую компонент SSH для выполнения некоторых задач на удаленном сервере, вывод, полученный в результате SSH::into()->run()
будет игнорироваться вышеуказанным кодом.
Если я запускаю команду artisan вручную, я получаю следующий вывод:
start [root@remote-host] (xxxx) Stopping php-fpm: [root@remote-host] (xxxx) [ OK ] [root@remote-host] (xxxx) Starting php-fpm: [root@remote-host] (xxxx) [ OK ] [root@remote-host] (xxxx) Stopping nginx: [root@remote-host] (xxxx) [ OK ] [root@remote-host] (xxxx) Starting nginx: [root@remote-host] (xxxx) [ OK ] end
Но $ output-> fetch () возвращает только:
start end
Вам нужно установить на него интерфейс вывода:
use Symfony\Component\Console\Output\BufferedOutput; Route::get('/test', function() { $output = new BufferedOutput; SSH::setOutput($output); SSH::run('ls -la'); return $output->fetch(); });