1 下载ssh2文件
下载地址 http://windows.php.net/downloads/pecl/releases/ssh2/0.12/
根据自己PHP的版本去下载,其中ts表示线程安全,nts表示不安全。
(可以使用phpinfo()查看需要哪一个,Thread Safety项是enabled表示线程安全)
2 安装ssh2
解压php_ssh2.zip
- 将 php_ssh.dll、php_ssh2.pdb 放到你的 php 扩展目录下 php/ext/ 下。
- 将libssh2.dll 复制到 c:/windows/system32 和 c:/windows/syswow64 各一份
- php.ini中加入 extension=php_ssh2.dllphp.ini中加入 extension=php_ssh2.dll
- 重启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地址要写完整!!!!!!