【发布时间】:2016-05-12 19:57:25
【问题描述】:
我有一个 Laravel 4.2 项目托管在一台服务器(服务器 A)上,我需要能够从该应用程序上传文件并将文件传输到位于相同的本地网络(服务器 B)。
我已经在 Windows 服务器上安装了 OpenSSH 并启动了该服务。我可以确认这是有效的,因为我可以在服务器 A 上的终端中成功连接。
在 Laravel 项目中,我在 app/config/remote.php 文件中创建了连接。
但是当我尝试使用以下代码在服务器 A 上的 Laravel 项目中运行命令时:
SSH::into('ServerB')->run(['IF EXIST folder (echo YES) ELSE (echo NO)'], function($line){
echo $line.PHP_EOL;
});
我收到以下错误:
unpack(): Type N: not enough input, need 4, have 1
我尝试在服务器 B 上运行的每个命令都收到此错误。奇怪的是,如果我尝试使用相同的代码但将其指向 Linux 服务器,则代码可以正常工作。这会让我相信 SSH 服务器可能在服务器 B 上设置不正确,但事实上我可以通过 SSH 从服务器 连接到服务器 B终端窗口中的一个混淆了整个问题!
有人知道我收到的错误的含义吗?
【问题讨论】:
-
您的 Laravel 4.2 项目托管在哪个 PHP 版本上?
-
我对Laravel不是很了解,但是在phpeclib上发现了一个类似的问题报告,去年修复了:github.com/terrafrost/phpseclib/commit/…
-
发布您的日志
echo $ssh->getLog();并检查您的主机和防火墙 -
unpack(): Type N: not enough input, need 4, have 1错误是不言自明的,您没有提供足够的输入,因为程序期望 4 但您提供了一个输入 -
听起来更像是服务器权限问题而不是 Laravel 问题。