php实现sftp

之前看过几篇关于php中实现sftp操作的文章,原理都是利用ssh扩展,但是自己用了之后效果不是很理想,遂转向了开源产品。今天向大家介绍一个开源库phpseclib,并贴一段代码。
在利用该库进行sftp操作之前,首先需要将库文件下载下来,具体下载有劳各位百度一下。
源代码下载下来之后,放到当前工程的存放库文件的文件夹下面,在本例子中是'lib'。

接下来,为了方便修改,建立一个sftp主机的配置文件SFTPConf.php

<?php
define('CONF_SFTP', 'sftpConf');
$sftpConf = array('server'=>'****','port'=>'22','username'=>'****','password'=>'****');

为了方便使用sftp,考虑构造一个工具类SftpUtil.php,并且将该文件放到‘util’文件夹下面

<?php
class SftpUtil {
	public static function getSftp(){
		$sftpconf = DIR_CONF . DS . 'SFTPConf.php';
		if (file_exists($sftpconf)) {
			require_once $sftpconf;
		} else {
			die('Can not load Conf : ' . $sftpconf . ' does not exist');
		}
		$includepath = dirname(dirname(__FILE__)).DS.'lib'.DS.'phpseclib'; //动态添加位于lib文件夹下面的phpseclib库到当前系统includepath
		set_include_path(get_include_path() . PATH_SEPARATOR .$includepath);
		include('Net/SFTP.php');
		$sftpconf = ${CONF_SFTP};   //加载sftp配置文件
		$strServer = $sftpconf['server'];
		$strServerPort = $sftpconf['port'];
		$strServerUsername = $sftpconf['username'];
		$strServerPassword = $sftpconf['password'];
		$sftp = new Net_SFTP($strServer);  //初始化一个sftp实例
		for($i = 0;$i<10;$i++){
			if ($sftp->login($strServerUsername, $strServerPassword)) {   //考虑到网络条件等因素,允许尝试至多10次登录操作
				break;
			}
			else{
				if($i==9){
					exit('Sftp Login Failed');   //如果10次都登录失败,则退出
				}
			}
		}
		return $sftp;
	}
		
}
                   在需要使用sftp的时候,可以这样使用该类:首先include该SftpUtil.php,之后可以通过SftpUtil::getSftp()获得一个sftp对象,之后可以执行各种sftp操作。具体api参见phpseclib的说明,都很简单,这里我给出几个例子:

put() 上传文件

mkdir() 建立目录

chdir() 切换目录

pwd() 获得当前工作目录



希望能帮到大家



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值