找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 604|回复: 0
打印 上一主题 下一主题

php中使用sftp教程

[复制链接]

2487

主题

2487

帖子

7391

积分

论坛元老

Rank: 8Rank: 8

积分
7391
跳转到指定楼层
楼主
发表于 2018-2-14 05:47:28 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

            
config = $config;        
        }
       
        // ftp 连接
        public function connect(){
                return $this->conn = ftp_connect($this->config['host'],$this->config['port']));
        }
       
       
        // 传输数据 传输层协议,获得数据 true or false
  public function download($remote, $local,$mode = 'auto'){
          return $result = @ftp_get($this->conn, $localpath, $remotepath, $mode);
  }
  
  // 传输数据 传输层协议,上传数据 true or false
  public function upload($remote, $local,$mode = 'auto'){
          return $result = @ftp_put($this->conn, $localpath, $remotepath, $mode);
  }
  
  
         // 删除文件
        public function remove($remote){
         return $result = @ftp_delete($this->conn_id, $file);
        }
  
       
}               
// 使用
$config = array(
                        'hostname' => 'localhost',
      'username' => 'root',
      'password' => 'root',
      'port' => 21
) ;

$ftp = new Ftp();
$ftp->connect($config);
$ftp->upload('ftp_err.log','ftp_upload.log');
$ftp->download('ftp_upload.log','ftp_download.log');
/*根据上面的三个协议写出基于ssh 的ftp 类
我们知道进行身份认证的方式有两种:公钥;密码 ;
(1) 使用密码登陆
(2) 免密码登陆也就是使用公钥登陆
*/
class sftp{
       
       
        // 初始配置为NULL
        private $config =NULL ;
        // 连接为NULL
        private $conn = NULL;
       
        // 是否使用秘钥登陆
         private $use_pubkey_file= false;
       
        // 初始化
        public function init($config){
                $this->config = $config ;
        }
       
       
        // 连接ssh ,连接有两种方式(1) 使用密码
        // (2) 使用秘钥
        public function connect(){
               
                $methods['hostkey'] = $use_pubkey_file ? 'ssh-rsa' : [] ;
                $con = ssh2_connect($this->config['host'], $this->config['port'], $methods);
                //(1) 使用秘钥的时候
                if($use_pubkey_file){
                // 用户认证协议
                         $rc = ssh2_auth_pubkey_file(
                                $conn,
                                $this->config['user'],
                                $this->config['pubkey_file'],
                                $this->config['privkey_file'],
                                $this->config['passphrase'])
                        );
                //(2) 使用登陆用户名字和登陆密码
                }else{
                        $rc = ssh2_auth_password( $conn, $this->conf_['user'],$this->conf_['passwd']);
      
                }
               
                return $rc ;
        }
       
       
        // 传输数据 传输层协议,获得数据
          public function download($remote, $local){
                  
                  return ssh2_scp_recv($this->conn_, $remote, $local);
          }
          
         //传输数据 传输层协议,写入ftp服务器数据
         public function upload($remote, $local,$file_mode=0664){
                  return ssh2_scp_send($this->conn_, $local, $remote, $file_mode);
                  
         }
         
         // 删除文件
          public function remove($remote){
                        $sftp = ssh2_sftp($this->conn_);
                        $rc  = false;
    if (is_dir("ssh2.sftp://{$sftp}/{$remote}")) {
                        $rc = false ;
                       
                        // ssh 删除文件夹
      $rc = ssh2_sftp_rmdir($sftp, $remote);
                        } else {
                  // 删除文件
                                $rc = ssh2_sftp_unlink($sftp, $remote);
                        }
                        return $rc;
                       
                }
                 


       
}
$config = [
  "host"     => "192.168.1.1 ",   // ftp地址
  "user"     => "***",
  "port"     => "22",
  "pubkey_path" => "/root/.ssh/id_rsa.pub",  // 公钥的存储地址
  "privkey_path" => "/root/.ssh/id_rsa",     // 私钥的存储地址
];
$handle = new SftpAccess();
$handle->init($config);
$rc = $handle->connect();
$handle->getData(remote, $local);
               
               
            
            
        
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

用户反馈
客户端