This article is mainly for you to introduce the PHP sftp upload download function, with a certain reference value, interested in small partners can refer to
First, the introduction of SFTP:
The protocol for FTP transfer using the SSH protocol is called SFTP (secure file transfer) both SFTP and FTP are file transfer protocols. Difference: SFTP is an SSH protocol (SSH is an encrypted Telnet protocol), as long as the sshd server is started, it is available, and SFTP security is high, it does not require the FTP server to boot. SFTP = SSH + FTP (secure file Transfer Protocol). Because FTP is transmitted in plaintext, there is no security, and SFTP is based on SSH, the transmission content is encrypted and more secure. At present the network is not very safe, used telnet to use SSH2 (SSH1 has been cracked).
SFTP This tool is the same as FTP usage. However, its transfer files are encrypted by SSL, even if intercepted and can not be cracked. and sftp more than the FTP function, some of the file property settings.
Second, SSH2 extended configuration
1. Download Address: http://windows.php.net/downloads/pecl/releases/ssh2/0.12/
Choose the extension package according to your PHP version, here I use php5.3, so I downloaded the php_ssh2-0.12-5.3-ts-vc9-x86.zip (download link)
2. After the decompression, there will be three files, Libssh2.dll, Php_ssh.dll, php_ssh2.pdb.
3. Put Php_ssh.dll, php_ssh2.pdb in your PHP extension directory under php/ext/.
4. Copy the Libssh2.dll to the C:/windows/system32 and C:/WINDOWS/SYSWOW64
5. Add Extension=php_ssh2.dll to PHP.ini
6. Restart Apache, print phpinfo (); The SSH2 extension appears, indicating that the installation was successful
Three, the SFTP code demo
Calling code
$config = Array ( ' host ' = ' 211.*.*.* ',//server ' port ' = ' 23 ',//Port ' username ' + ' test ',//user name ') Password ' = * * * * * * *,//password); $ftp = new Sftp ($config); $localpath = "E:/www/new_20170724.csv"; $serverpath = '/new_20170724.csv '; $st = $ftp->upftp ($localpath, $serverpath); Upload the specified file if ($st = = True) { echo "success"; } else{ echo "fail";}
SFTP Package Class
<?php/** * Sftp upload download file * */namespace common\org\util;class sftp{ //Initial configuration is null private $config = NULL;//connection to null PRI vate $conn = NULL; Initialize public function __construct ($config) {$this->config = $config; $this->connect ();} Public Function Connect () { $this->conn = ssh2_connect ($this->config[' host '), $this->config[' Port ']); (Ssh2_auth_password ($this->conn, $this->config[' username '), $this->config[' password ']) { }else{ echo "cannot authenticate to the server";} } Transmit Data Transfer layer protocol, get the public function downftp ($remote, $local) { $ressftp = ssh2_sftp ($this->conn); return copy ("Ssh2 . sftp://{$ressftp} ". $remote, $local); } //Transport Data Transfer layer protocol, write FTP server data public function upftp ($local, $remote, $file _mode = 0777) { $ressftp = ssh2_sftp ($this- >conn); return copy ($local, "ssh2.sftp://{$ressftp}". $remote); } }