ホームページ  >  記事  >  バックエンド開発  >  アップロードおよびダウンロード機能を実装する SFTP の PHP 例

アップロードおよびダウンロード機能を実装する SFTP の PHP 例

黄舟
黄舟オリジナル
2017-07-26 14:45:471181ブラウズ

この記事では、主に PHP 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 拡張機能の設定

ここでは php5.3 を使用しているため、php_ssh2-0.12-5.3-ts-vc9-x86.zip (ダウンロード リンク) をダウンロードしました。

2. 解凍すると、libssh2.dll、php_ssh.dll、php_ssh2.pdbの3つのファイルができます。

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 コードのデモ

呼び出しコード


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



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

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

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