sftp util php,php实现sftp

之前看过几篇关于php中实现sftp操作的文章,原理都是利用ssh扩展,但是自己用了之后效果不是很理想,遂转向了开源产品。今天向大家介绍一个开源库phpseclib,并贴一段代码。

在利用该库进行sftp操作之前,首先需要将库文件下载下来,具体下载有劳各位百度一下。

源代码下载下来之后,放到当前工程的存放库文件的文件夹下面,在本例子中是'lib'。

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

define('CONF_SFTP', 'sftpConf');

$sftpConf = array('server'=>'****','port'=>'22','username'=>'****','password'=>'****');

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

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() 获得当前工作目录

希望能帮到大家

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值