2012-10-15 32 views
1

我重写经过加工,整理本地服务器上的文件与一个可以通过SSH连接实现远程服务器上做这样的功能。什么文件操作都可以使用SSH2://在PHP

现有系统使用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服务器工作

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

(总是回来空白尽管在目录中的一些XML文件(SFTP本地工作连接到一个目录)。

我怎样才能达致这?我可以使用功能,如水珠()在这里?

回答

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

无法看到任何不需要文字文件路径传递 – Damon

+0

可以执行shell命令找到你的文件,比如'ls'或'find | grep'等更新了答案... –

+0

好的非常感谢这个例子。 – Damon

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

相关问题