Dieser Artikel stellt Ihnen zunächst SFTP vor. Später werden wir Ihnen hauptsächlich Beispiele für die Implementierung von Upload- und Download-Funktionen vorstellen.
1. Einführung in SFTP:
Das Protokoll, das das SSH-Protokoll für die FTP-Übertragung verwendet, heißt SFTP (Secure File Transfer) und FTP sind beide Dateiübertragungen Protokolle. Unterschied: SFTP ist ein in SSH enthaltenes Protokoll (SSH ist ein verschlüsseltes Telnet-Protokoll, es ist verfügbar, außerdem ist SFTP sicherer und erfordert keinen Start des FTP-Servers). sftp = ssh + ftp (Secure File Transfer Protocol). Da FTP Klartext überträgt, gibt es keine Sicherheit, während SFTP auf SSH basiert und der Übertragungsinhalt verschlüsselt ist, was sicherer ist. Das aktuelle Netzwerk ist nicht sehr sicher. Wer früher Telnet nutzte, ist auf ssh2 umgestiegen (SSH1 wurde geknackt).
Das SFTP-Tool wird genauso verwendet wie FTP. Die übertragenen Dateien werden jedoch über SSL verschlüsselt und können nicht geknackt werden, selbst wenn sie abgefangen werden. Darüber hinaus verfügt SFTP über mehr Funktionen als FTP, einschließlich einiger zusätzlicher Dateiattributeinstellungen.
2. SSH2-Erweiterungskonfiguration
1. Download-Adresse: http://windows.php.net/downloads/pecl/releases/ ssh2/0.12/
Wählen Sie das Erweiterungspaket entsprechend Ihrer PHP-Version. Hier verwende ich php5.3, also habe ich php_ssh2-0.12-5.3-ts-vc9-x86.zip heruntergeladen (Download-Link). )
2. Nach der Dekomprimierung gibt es drei Dateien: libssh2.dll, php_ssh.dll, php_ssh2.pdb.
3. Platzieren Sie php_ssh.dll und php_ssh2.pdb in Ihrem PHP-Erweiterungsverzeichnis php/ext/.
4. Kopieren Sie libssh2.dll nach c:/windows/system32 und c:/windows/syswow64
5. Fügen Sie es zu php.ini extension=php_ssh2 hinzu. dll
6. Starten Sie Apache neu und drucken Sie phpinfo(); Die SSH2-Erweiterung wird angezeigt, was die erfolgreiche Installation anzeigt
3. SFTP Code DEMO
Aufrufcode
$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-Kapselungsklasse
<?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); } }
Verwandte Empfehlungen:
So implementieren Sie SFTP in PHP
Detaillierte Erläuterung der Schritte zur Verwendung von SFTP in PHPstorm
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Beispielen für Upload- und Download-Funktionen mit PHP SFTP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!