1

ローカル サーバー上のファイルを処理およびソートする関数を、ssh 接続を介して到達したリモート サーバー上で実行できる関数に書き直しています。

既存のシステムは、pecl ssh2 ライブラリを使用して、次のような特定のファイルを取得します。

if ($stream = @fopen("ssh2.sftp://$sftp/$filename", "r")) {
//do stuff...
}

しかし、私はまだファイル名を知りません。私はこれを使用してローカルで作業していました

$file_path =  ABSOLUTE_PATH . UPLOAD_URL . $importfolder . '/';
$file = '*.xml';
$files = glob($file_path.$file);

ssh サーバー経由で glob() を動作させることができません

$files = glob("ssh2.sftp://$sftp/*.xml");

(ディレクトリ内に多数のxmlファイルがあるにもかかわらず、常に空白に戻ります(sftp接続は単一のディレクトリに対するものです)。

どうすればこれを達成できますか?ここで glob() のような関数を使用できますか?

4

2 に答える 2

1

あなたはこれを行うことができます:

<?php
include('Net/SFTP.php');

$sftp = new Net_SFTP('www.domain.tld');
if (!$sftp->login('username', 'password')) {
    exit('Login Failed');
}

print_r($sftp->nlist()); // == $sftp->nlist('.')
print_r($sftp->rawlist()); // == $sftp->rawlist('.')
?>

(純粋な PHP SFTP 実装である phpseclib を使用)

于 2012-10-16T13:02:05.023 に答える
1

あなたは単にssh2関数を使うことができます...

すなわち。

$session = ssh2_connect('some.server', 22);
ssh2_auth_password($session, 'username', 'password');
$stream = ssh2_exec($session, 'ls -la /some/path');
stream_set_blocking($stream, true);
echo "list of files: " . stream_get_contents($stream);
于 2012-10-15T18:43:40.830 に答える