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);

我无法让 glob() 通过 ssh 服务器工作

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

(尽管目录中有许多 xml 文件,但总是返回空白(sftp 连接到单个目录)。

我怎样才能做到这一点?我可以在这里使用像 glob() 这样的函数吗?

4

2 回答 2

1

您可以简单地使用ssh2 功能...

IE。

$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 回答
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('.')
?>

(使用phpseclib,一个纯 PHP SFTP 实现

于 2012-10-16T13:02:05.023 回答