Dieser Artikel stellt hauptsächlich die Upload- und Download-Funktionen von PHP SFTP im Detail vor. Interessierte Freunde können darauf verweisen
1. Einführung in SFTP:
Das Protokoll, das das SSH-Protokoll für die FTP-Übertragung verwendet, heißt SFTP (Secure File Transfer). Sftp und Ftp sind beide Dateiübertragungsprotokolle. 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
Wählen Sie das Erweiterungspaket entsprechend Ihrer eigenen PHP-Version, also habe ich php_ssh2 heruntergeladen. 0.12-5.3-ts-vc9-x86.zip (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); } }
Das obige ist der detaillierte Inhalt vonPHP-Beispiel für SFTP zur Implementierung von Upload- und Download-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!