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