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

Laravel SSH输出未返回完整的输出内容,laravel,laravel-4,Laravel,Laravel 4,我使用laravel4和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 me

我使用laravel4和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是否对其进行了修剪?

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

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

出现的问题是,
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->输出


那就把所有内容都打印出来了

你能在当前shell中执行脚本吗,比如
/update.sh
源代码。/update.sh
?也许它只是无法捕获子shell输出…Hi@matpop我已经运行了这两个命令,并显示了完整的输出。Hi ajtrichards,你用Laravel尝试过这些命令吗?Laravel是否显示完整输出?有什么变化吗?是的,我已经在Laravel中运行了命令,但没有任何变化:-(嗨,ajtrichards,这是一次打印所有输出行吗?还是实时打印?意思是,如果你有一组4个命令,在性能上相当高,那么返回值(输出)是多少立即返回还是仅在运行所有命令后返回?例如,创建一组文件的副本,然后构建一组HTML文件,然后备份这些文件,然后通过电子邮件发送这些文件,等等。