0

PHP 连接 sftp 并进行文件的上传和下载

Posted by 撒得一地 on 2018年9月11日 in PHP笔记

最近碰到一个小需求,需要使用 PHP 连接 sftp,然后进行文件的上传和下载。

稍微看了下,要支持 PHP 连接 sftp 需要安装 ssh2 拓展。下面介绍 linux 下 php 安装 ssh2 拓展的步骤。

安装 ssh2 拓展

在安装 ssh2 拓展前需要先安装 libssh2 ,具体安装步骤如下:

	wget https://www.libssh2.org/download/libssh2-1.8.0.tar.gz
	tar -zxvf libssh2-1.8.0.tar.gz
	cd libssh2-1.8.0
	./configure --prefix=/usr/local/libssh2
	make
	make install

然后安装 ssh2 拓展 :

wget https://pecl.php.net/get/ssh2-1.1.2.tgz
	
tar -zxvf ssh2-1.1.2.tgz 
	
cd ssh2-1.1.2
	
/home/php/local/webserver/php722/bin/phpize
	
./configure --prefix=/usr/local/ssh2 --with-ssh2=/usr/local/libssh2 --with-php-config=/home/php/local/webserver/php722/bin/php-config
	
make
	
make install

注意:上面的 /home/php/local/webserver/php722 改为你自己的 php 安装路径。

然后编辑 php.ini 配置文件,加入如下内容:

	extension=ssh2.so

然后重启 php 即可生效。

PHP 连接 sftp 并操作文件

下面直接附上 php 连接 sftp,然后上传和下载文件的源代码,代码很简单,几行就搞定,具体代码如下:

	<?php

	$config = array("host"=>"192.168.2.1","user"=>"test","port"=>"17122","passwd"=>"test");

	$conn = ssh2_connect($config['host'], $config['port']);

	if (!ssh2_auth_password($conn, $config['user'], $config['passwd'])) {
	    die('sftp 连接失败');
	}

	$remotFile = "/data/test.txt";
	$localPath = '/home/php';
	// 如果文件已存在就覆盖
	$localFile = 'test.txt';
	$localRealFile = $localPath . '/' . $localFile;

	// 如果文件存在则删除,当然这里也可以根据需求进行修改
	if (is_file($localRealFile)) {
	unlink($localRealFile);
	}

	$sftp = ssh2_sftp($conn);
	$resource = "ssh2.sftp://{$sftp}" . $remotFile;

	//远程文件拷贝到本地
	copy($resource, $localRealFile);

	//本地上传文件到ftp
	$remote = "/data/test123.txt";
	$local = "/home/php/test123.txt";
	copy($local,"ssh2.sftp://{$sftp}".$remote);

注意:上面的文件路径和名称改为你自己的就可以了。

你也可以对上面的代码完善一下,比如封装成类,更加方便的进行操作。

本文地址:https://coderschool.cn/2831.html,转载请注明。

上一篇:

下一篇:已是最新文章

相关推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注

4 + 9 = ?

网站地图|XML地图

Copyright © 2015-2018 技术拉近你我! All rights reserved.
闽ICP备15015576号-1,版权所有©psz.