PHP中的ssh2://可以使用哪些文件操作

时间:2012-10-15 17:38:55

标签: php file-io sftp glob

我正在重写一个处理和排序本地服务器上的文件的函数,该函数可以在通过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()这样的函数吗?

2 个答案:

答案 0 :(得分:1)

你可以简单地使用ssh2 functions ...

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

答案 1 :(得分: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, a pure PHP SFTP implementation