首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用phpseclib Net_SFTP.get下载文件夹不起作用

使用phpseclib Net_SFTP.get下载文件夹不起作用
EN

Stack Overflow用户
提问于 2017-11-16 22:50:53
回答 4查看 2.8K关注 0票数 4

我正在尝试使用phpseclib访问SFTP文件夹服务器中的文件。但是当我尝试使用$sftp->get时,它返回false。我根本不确定如何调试这个问题。

代码语言:javascript
复制
public function get_file_from_ftps_server()
{
    $sftp = new \phpseclib\Net\SFTP(getenv('INSTRUM_SERVER'));
    if (!$sftp->login(getenv('INSTRUM_USERNAME'), getenv('INSTRUM_PASSWORD'))) {
        exit('Login Failed');
    }

    $this->load->helper('file');           
    $root  = dirname(dirname(__FILE__));
    $root .= '/third_party/collections_get/';
    $path_to_server = 'testdownload/';
    $result = $sftp->get($path_to_server, $root);

    var_dump($result);
}

$result中,我得到了一个false,我不确定为什么会发生这种情况,我阅读了他们的文档,但仍然不确定。Root是我希望存储信息的目录。现在,我只在那里添加了一个trial.xml文件,但我也想知道,如果它在文件夹中,我如何才能获得多个文件。

下面是服务器结构的图片:

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-11-22 02:31:38

通常,当我使用sftp时,我通常会切换目录,然后尝试下载信息。

代码语言:javascript
复制
$sftp->pwd(); // This will show you are in the root after connection.
$sftp->chdir('./testdownload'); // this will go inside the test directory.
$get_path = $sftp->pwd()
//If you want to download multiple data, use
$x = $sftp->nlist();
//Loop through `x` and then download the file using.
$result = $sftp->get($get_path); // Normally I use the string information that is returned and then download using

file_put_contents($root, $result);

// Root is your directory, and result is the string.
票数 3
EN

Stack Overflow用户

发布于 2017-11-16 23:12:27

Net_SFTP.get方法只能下载单个文件。您不能使用它来下载整个目录。

如果你想下载整个目录,你必须使用一个“列表”方法(Net_SFTP.nlistNet_SFTP.rawlist)来检索文件列表,然后逐个下载文件。

票数 2
EN

Stack Overflow用户

发布于 2020-12-16 00:36:27

代码语言:javascript
复制
<?php
use phpseclib\Net\SFTP;

$sftp = new SFTP("server");

if(!$sftp->login("username", "password")) {
    throw new Exception("Connection failed");
}

// The directory you want to download the contents of
$sftp->chdir("/remote/system/path/");

// Loop through each file and download
foreach($sftp->nlist() as $file) {
    if($file != "." && $file != "..")
        $sftp->get("/remote/system/path/$file", "/local/system/path/$file");
}
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47332649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档