ホームページ  >  記事  >  バックエンド開発  >  PHP SFTPを使ったアップロード・ダウンロード機能の例を詳しく解説

PHP SFTPを使ったアップロード・ダウンロード機能の例を詳しく解説

小云云
小云云オリジナル
2018-02-01 10:16:422100ブラウズ

この記事では、まず SFTP について紹介します。その後、主に SFTP がアップロード機能とダウンロード機能を実装する方法の例を紹介します。

1. SFTP の概要:

FTP 送信に SSH プロトコルを使用するプロトコルは、SFTP (Secure File Transfer) と呼ばれ、Sftp と Ftp はどちらもファイル転送プロトコルです。違い: sftp は ssh に含まれるプロトコルです (ssh は暗号化された Telnet プロトコルです)。さらに、sftp はより安全であり、ftp サーバーを起動する必要はありません。 sftp = ssh + ftp (安全なファイル転送プロトコル)。 ftp は平文で送信するためセキュリティがありませんが、sftp は ssh をベースにしており、送信内容は暗号化されているため安全です。現在のネットワークはあまり安全ではありません。これまで Telnet を使用していた人は ssh2 に切り替えています (SSH1 はクラックされています)。

sftp ツールは ftp と同じように使用されます。ただし、送信されるファイルはSSLで暗号化されており、たとえ傍受されても解読することはできません。さらに、sftp には、追加のファイル属性設定など、ftp よりも多くの機能があります。

2. SSH2 拡張機能の構成

1. ダウンロード アドレス: http://windows.php.net/downloads/pecl/releases/ssh2/0.12/

PHP のバージョンに応じて拡張機能パッケージを選択します。ここではphp5.3を使用しているので、php_ssh2-0.12-5.3-ts-vc9-x86.zip (ダウンロードリンク)

2をダウンロードしました。 .dll、php_ssh2.pdb。

3. php_ssh.dll と php_ssh2.pdb を php 拡張ディレクトリ php/ext/ に配置します。

4. libssh2.dll を c:/windows/system32 および c:/windows/syswow64 にコピーします

5. extension=php_ssh2.dll を php.ini に追加します

6. Apache を再起動し、phpinfo() を出力します。 ; SSH2 拡張機能が表示され、インストールが成功したことが示されます

3. SFTP コード DEMO

呼び出しコード


 $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";
 }

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); 
 
 }
 
}

関連

phpでsftpを実装する方法

PhpstormでSFTPを使用する手順の詳細な説明

nodejsを使用してファイルの変更を監視し、sftpを使用してサーバーにアップロードします

以上がPHP SFTPを使ったアップロード・ダウンロード機能の例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。