品易云推流 关闭
文章详情页
文章 > PHP教程 > php实现sftp上传的方法

php实现sftp上传的方法

php

头像

小妮浅浅

2021-09-15 15:57:54954浏览 · 0收藏 · 0评论

1、创建代码“class SFTPConnection private $connection...try{...}catch{...}”。

2、执行“sftp -oPort=port user@server”。

class SFTPConnection
 
{
 
    private $connection;
 
    private $sftp;
 
 
 
    public function __construct($host, $port=22)
 
    {
 
        $this->connection = @ssh2_connect($host, $port);
 
        if (! $this->connection)
 
            throw new Exception("Could not connect to $host on port $port.");
 
    }
 
 
 
    public function login($username, $password)
 
    {
 
        if (! @ssh2_auth_password($this->connection, $username, $password))
 
            throw new Exception("Could not authenticate with username $username " .
 
                                "and password $password.");
 
 
 
        $this->sftp = @ssh2_sftp($this->connection);
 
        if (! $this->sftp)
 
            throw new Exception("Could not initialize SFTP subsystem.");
 
    }
 
 
 
    public function uploadFile($local_file, $remote_file)
 
    {
 
        $sftp = $this->sftp;
 
        $stream = @fopen("ssh2.sftp://$sftp$remote_file", 'w');
 
 
 
        if (! $stream)
 
            throw new Exception("Could not open file: $remote_file");
 
 
 
        $data_to_send = @file_get_contents($local_file);
 
        if ($data_to_send === false)
 
            throw new Exception("Could not open local file: $local_file.");
 
 
 
        if (@fwrite($stream, $data_to_send) === false)
 
            throw new Exception("Could not send data from file: $local_file.");
 
 
 
        @fclose($stream);
 
    }
 
}
 
 
 
try
 
{
 
    $sftp = new SFTPConnection("localhost", 22);
 
    $sftp->login("username", "password");
 
    $sftp->uploadFile("/tmp/to_be_sent", "/tmp/to_be_received");
 
}
 
catch (Exception $e)
 
{
 
    echo $e->getMessage() . "\n";
 
}

以上就是php实现sftp上传的方法,希望对大家有所帮助。更多php学习指路:php教程

本文转载于php中文网,如有侵犯联系作者修改。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

底部广告图