6

我正在尝试将文件从我的 php 服务器上传到其他服务器(我的工作场所非常糟糕,无法阻止 ssh 流量)

无论如何,这就是我想要做的:(在:/public_html/manage.php

<?php

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib/phpseclib');
include('Net/SSH2.php');
include('Net/SFTP.php');

$ssh = new Net_SSH2('SomeServer',22); //starting the ssh connection to localhost
if (!$ssh->login('root', '12345')) { //if you can't log on...
    exit('ssh Login Failed');
}
$sftp = new Net_SFTP('SomeServer',22);
if (!$sftp->login('root', '12345')) { //if you can't log on...
    exit('sftp Login Failed');
}
echo $sftp->pwd();

$output = $sftp->put('/root/1_yum_stuff.sh', '1_yum_stuff.txt');
echo $output;
$output = $ssh->exec('ls -a');
//$output = $ssh->exec('./1_yum_stuff.sh & 1>1.txt');
echo $output;
$output = $ssh->exec('pwd');
echo $output;
echo("3rd try!");
?>

问题是,文件“1_yum_stuff.txt”位于我的 php 服务器上的 /public_html/ 文件夹中,而 sftp 就是无法移动该文件。

无论如何,这是使用 phpseclib 的 sftp 模块的正确方法吗?(例如放?)

谢谢:) !

4

1 回答 1

3

我会稍微重写你的代码。例如。:

<?php

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib/phpseclib');
include('Net/SSH2.php');
include('Net/SFTP.php');

$sftp = new Net_SFTP('SomeServer',22);
if (!$sftp->login('root', '12345')) { //if you can't log on...
    exit('sftp Login Failed');
}
echo $sftp->pwd();

$output = $sftp->put('/root/1_yum_stuff.sh', '1_yum_stuff.txt');
echo $output;
$output = $sftp->exec('ls -a');
//$output = $sftp->exec('./1_yum_stuff.sh & 1>1.txt');
echo $output;
$output = $sftp->exec('pwd');
echo $output;
echo("3rd try!");
?>

Net_SFTP 扩展了 Net_SSH2,因此它继承了所有方法。此外,CBroe 是对的 - 如果没有 phpseclib 的第三个参数,$sftp->put()将创建 /root/1_yum_stuff.sh ,其中包含 15 个字节(即。strlen("1_yum_stuff.txt"))。

于 2013-03-20T14:58:30.260 回答