Maison >développement back-end >tutoriel php >Analyse détaillée de l'implémentation PHP SFTP des fonctions de téléchargement et de téléchargement

Analyse détaillée de l'implémentation PHP SFTP des fonctions de téléchargement et de téléchargement

墨辰丷
墨辰丷original
2018-05-19 09:12:331643parcourir

Cet article présente principalement en détail les fonctions de téléchargement et de téléchargement de PHP SFTP. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer

1. Introduction à SFTP :

Le protocole qui utilise le protocole SSH pour la transmission FTP est appelé SFTP (Secure File Transfer). Sftp et Ftp sont tous deux des protocoles de transfert de fichiers. Différence : sftp est un protocole inclus dans ssh (ssh est un protocole telnet crypté). Tant que le serveur sshd est démarré, il est disponible. De plus, sftp est plus sécurisé et ne nécessite pas le démarrage du serveur ftp. sftp = ssh + ftp (Secure File Transfer Protocol). Étant donné que FTP transmet du texte brut, il n'y a aucune sécurité, tandis que FTP est basé sur SSH et le contenu de la transmission est crypté, ce qui est plus sécurisé. Le réseau actuel n'est pas très sécurisé. Ceux qui utilisaient telnet dans le passé sont passés à ssh2 (SSH1 a été cracké).

L'outil sftp est utilisé de la même manière que ftp. Cependant, ses fichiers transmis sont cryptés via SSL et ne peuvent pas être piratés même s'ils sont interceptés. De plus, sftp a plus de fonctions que ftp, y compris certains paramètres d'attributs de fichier supplémentaires.


2. Configuration de l'extension SSH2

1. Adresse de téléchargement : http://windows.php.net/downloads/pecl/releases/ ssh2/0.12/


Choisissez le package d'extension en fonction de votre version de php Ici, j'utilise php5.3, j'ai donc téléchargé php_ssh2-0.12-5.3-ts-vc9-x86.zip ( Lien de téléchargement. )

2. Après décompression, il y aura trois fichiers, libssh2.dll, php_ssh.dll, php_ssh2.pdb.


3. Placez php_ssh.dll et php_ssh2.pdb sous votre répertoire d'extension php php/ext/.


4. Copiez libssh2.dll dans c:/windows/system32 et c:/windows/syswow64


5. Ajoutez-le à php.ini extension=php_ssh2. dll


6. Redémarrez Apache et imprimez phpinfo(); L'extension SSH2 apparaîtra, indiquant une installation réussie

3. SFTP code DEMO

Code d'appel

 $config = array(
  'host' =>'211.*.*.*', //服务器
  'port' => '23', //端口
  'username' =>'test', //用户名
  'password' =>'*****', //密码
 );
 $ftp = new Sftp($config);
 $localpath="E:/www/new_20170724.csv";
 $serverpath='/new_20170724.csv';
 $st = $ftp->upftp($localpath,$serverpath); //上传指定文件
 if($st == true){
  echo "success";
  
 }else{
  echo "fail";
 }

Classe d'encapsulation SFTP


<?php
/**
 * 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[&#39;host&#39;], $this->config[&#39;port&#39;]);
 if( ssh2_auth_password($this->conn, $this->config[&#39;username&#39;], $this->config[&#39;password&#39;]))
 {
  
 }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); 
 
 }
 
}

Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

PHP se connecte à sftp pour implémenter le téléchargement et le téléchargement de fichiers

PHP+ sftp Implémentation du téléchargement et du téléchargement de fichiers

Exemple détaillé de PHP SFTP implémentant la fonction de téléchargement et de téléchargement

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn