この記事では、まず 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['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); } }
関連
nodejsを使用してファイルの変更を監視し、sftpを使用してサーバーにアップロードします
以上がPHP SFTPを使ったアップロード・ダウンロード機能の例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。