6

私は自分のphpサーバーから他のサーバーにファイルをアップロードしようとしています(私の職場はsshトラフィックをブロックするのに十分なほど足が不自由です)

とにかく、これが私がやろうとしていることです:(at:/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の3番目のパラメーターがない$sftp->put()と、15バイトを含む/root/1_yum_stuff.shが作成されます(つまりstrlen("1_yum_stuff.txt"))。

于 2013-03-20T14:58:30.260 に答える