我使用phpseclib库中的以下代码登录到远程服务器(远程服务器使用:SFTP - SSH文件传输协议):
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
include('phpseclib/Net/SFTP.php');
$sftp = new Net_SFTP('200.160.163.10');
if (!$sftp->login('username', 'password')) {
exit('Login Failed');
}
?>
运行上面的代码后,我得到以下消息:
Notice: Error reading channel data in /home/comdinhe/public_html/phpseclib/Net/SSH2.php on line 3480
Notice: Connection closed prematurely in /home/comdinhe/public_html/phpseclib/Net/SSH2.php on line 3500
Login Failed
有谁知道可能会发生什么?
答案 0 :(得分:1)
我认为 get 方法适用于Net_SFTP。
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
include('phpseclib/Net/SFTP.php');
$sftp = new Net_SFTP('200.160.585.10');
if (!$sftp->login('username', 'password')) {
exit('Login Failed');
}
echo $sftp->pwd() . "\r\n";
$sftp->get(
'/sianbima/cbfundo/cbfundo_00000_20160808_171429.txt',
'/home/comdinhe/public_html/testeArquivo.txt'
);
?>
或者您可以尝试在ssh中执行rsync命令。
$ssh->exec('rsync -avz /sianbima/cbfundo/cbfundo_00000_20160808_171429.txt /home/comdinhe/public_html');