Laravel SSH输出未返回完整的输出内容
我使用laravel4和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
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文件,然后备份这些文件,然后通过电子邮件发送这些文件,等等。