PHP SFTP简单上传下载实现

1 下载ssh2文件
下载地址 http://windows.php.net/downloads/pecl/releases/ssh2/0.12/
根据自己PHP的版本去下载,其中ts表示线程安全,nts表示不安全。
(可以使用phpinfo()查看需要哪一个,Thread Safety项是enabled表示线程安全)

2 安装ssh2
解压php_ssh2.zip

  1. 将 php_ssh.dll、php_ssh2.pdb 放到你的 php 扩展目录下 php/ext/ 下。
  2. 将libssh2.dll 复制到 c:/windows/system32 和 c:/windows/syswow64 各一份
  3. php.ini中加入 extension=php_ssh2.dllphp.ini中加入 extension=php_ssh2.dll
  4. 重启PHP

3 sftp的连接上传下载

/**
 * Sftp上传下载文件
 *
 */
namespace Common\ORG\Util;

class Sftp
{

    // 初始配置为NULL
    private $config = NULL;
    // 连接为NULL
    private $conn = NULL;
    // 初始化
    public function __construct($config)
    {
        $this->config = $config;
        $this->connect();
    }


    public function connect()
    {

        $this->conn = ssh2_connect($this->config['host'], $this->config['port']); //资源
        if( ssh2_auth_password($this->conn, $this->config['username'], $this->config['password']))
        {
			
        }else{
            echo "无法在服务器进行身份验证";
        }

    }

    // 传输数据 传输层协议,获得数据
    public function downftp($remote, $local)
    {
        $ressftp = ssh2_sftp($this->conn);
        return copy("ssh2.sftp://{$ressftp}".$remote, $local);
    }

    // 传输数据 传输层协议,写入ftp服务器数据
    public function upftp( $local,$remote, $file_mode = 0777)
    {
        $ressftp = ssh2_sftp($this->conn);
        return copy($local,"ssh2.sftp://{$ressftp}".$remote); 
    }

}

4 实例

$config = array(
    'host' =>'', //服务器
    'port' => '22', //端口
    'username' =>'', //用户名
    'password' =>'', //密码
);

$ftp = new Sftp($config);
$localpath="D:/234.txt"; //源文件地址
$serverpath='/234.txt'; //上传sftp地址
$st = $ftp->upftp($localpath,$serverpath); //上传指定文件
if($st == true){
    echo "success";

}else{
    echo "fail";
}

地址路径区分大小写,sftp地址要写完整!!!!!!

猜你喜欢

转载自blog.csdn.net/qq_41654694/article/details/82886682