Laravel SSH输出未返回完整输出内容

时间:2014-08-30 16:49:22

标签: laravel laravel-4

我正在使用Laravel 4和SSH命令运行以下代码。

SSH::into('runtime')->run(array(
   'cd /home/ubuntu',
   './update.sh'
), function ($line){

   echo $line.PHP_EOL;

});

SSH命令工作正常,update.sh文件的内容运行。然而...

如果我从命令行运行update.sh脚本,则输出为:

Already up-to-date. (This part of the message depends on the output of git pull)
Stopping nginx: nginx.
Starting nginx: nginx.

运行Laravel代码时我得到的是什么:

nginx.

有没有办法获得完整的输出或Laravel无论如何都要修剪它?

2 个答案:

答案 0 :(得分:1)

尝试向命令附加重定向以将stderr发送到stdout。

SSH::into('runtime')->run(array(
    'cd /home/ubuntu',
    './update.sh 2>&1'
), function ($line){
    $this->line($line);
});

答案 1 :(得分:0)

正在发生的问题是update.sh正在运行3个命令,而Laravel SSH功能只返回输出的最后一部分,因为我用来捕获的变量一直被覆盖。

我在班上创建了一个私有变量:

private $output;

然后将我的SSH运行代码更改为:

SSH::into('runtime')->run(array(
   'cd /home/ubuntu',
   './update.sh'
), function ($line){

   $this -> output .= $line.PHP_EOL;

});

因此,为了实现这一点,我将$line的输出附加到输出变量。然后我可以使用:

访问我的输出

echo $this -> output;

那打印出来的一切