【发布时间】:2017-04-17 18:19:15
【问题描述】:
我在 Laravel 5.3 上使用带有 SSH 的 LaravelCollective 闭包
但令我惊讶的是,当任何命令尝试 return exit 时,都会得到截断结果。
$exit = array();
SSH::run($cmd, function ($line) use (&$exit) {
echo $line.PHP_EOL;
$exit[] = $line;
});
dd($exit) // dd it's a var_dump + exit helper on Laravel
这段代码返回正确的第一部分(echo $line.PHP_EOL),如下所示
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.appdata
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.autorespond
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.cpanel
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.cphorde
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.cpremote
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.elinks
...
数组上的结果错误。 4
array:5 [
0 => """
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home\n
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0\n
/Volumes/MACBAC
...
"""
4 => """
UP/cprsync_remote/hq/daily/users/tamainut/home/daily.8/tmp\n
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.8/updates\n
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.9\n
/Volumes/MACBACKUP/cprsync_r
我尝试了几个选项,但都可以正常工作。
我不明白为什么我看到完美的回声线,但不能插入数组以供以后工作。
在一些 cmets 之后编辑。
我看到问题是关闭,获取lineof SSH 命令如何使用“\n”字符串。在获得字符串截断的最大大小后,并运行新的闭包迭代。这是问题。
【问题讨论】:
-
你不是要在最后做
dd($exit);来查看你存储的所有行的完整数组吗? -
我只使用 dd 查看 $exit 上的值。
-
我意识到这一点。但是你的数组是
$exit; -
好的...抱歉输入错误。问题不是 dd()。 dd() 它是一个帮手。忘记 dd() 并考虑 $exit 的值。
-
我非常了解
dd()的工作原理。并且需要dd($exit)调试查看$exit的值!
标签: php arrays laravel closures laravelcollective