Heim > Artikel > Backend-Entwicklung > PHP stellt eine Verbindung zu SFTP her, um das Hoch- und Herunterladen von Dateien zu implementieren
Der Inhalt dieses Artikels handelt von der Verbindung von SFTP mit PHP, um das Hochladen und Herunterladen von Dateien zu ermöglichen. Jetzt kann ich ihn mit Ihnen teilen.
Kürzlich entwickelt Projekt zur Zusammenarbeit mit Banken Projekte erfordern das Hoch- und Herunterladen von Dateien. Es gibt bestimmte Anforderungen an die Vertraulichkeit von Dateien, daher wird SFTP verwendet. Bei der tatsächlichen Entwicklung sind wir jedoch auf viele Probleme gestoßen. Die online gefundenen Tutorials und Fälle konnten nicht verwendet werden und wurden immer wieder kopiert. Nach ständigem Debuggen wurde schließlich der Datei-Upload und -Download von PHP realisiert. Es wird jetzt nur zu Referenzzwecken aufgezeichnet.
1. Überprüfen Sie die PHP-Version und laden Sie die entsprechende ssh2-Erweiterung herunter: https://windows.php.net/downloads/pecl/releases/ssh2/. Für eine spezifische Installation suchen Sie bitte online. phpinfo() prüft, ob es installiert ist. Nach erfolgreicher Installation können Sie ssh2 sehen.
2. Die im Internet bereitgestellten Upload- und Download-Methoden (ich glaube, Sie müssen sie gesehen haben)
<·?·php //php环境中必须有ssh ·$strServer = "服务器ip";//服务器ip ·$strServerPort = "22";//端口号 ·$strServerUsername = "***";//用户名 ·$strServerPassword = "***";//密码 ·//connect to server ·$resConnection = ssh2_connect($strServer, $strServerPort); ·if(ssh2_auth_password($resConnection, $strServerUsername, $strServerPassword)){ ·//初始化 SFTP ·$resSFTP = ssh2_sftp($resConnection); ·echo $resSFTP; ·//下载文件 ·//1 ·$filename = 'D:\down'.time().'.txt'; ·$opts = array( ·'http'=>array( ·'method'=>"GET", ·'timeout'=>60, ·) ·); ·$context = stream_context_create($opts); ·$strData = ·file_get_contents("ssh2.sftp://{$resSFTP}/var/testfile/abc.txt", false, $context); ·file_put_contents($filename, $strData); ·//2 也可以用copy() ·//if(!copy("ssh2.sftp://{$resSFTP}/dfr508/WUN/ikea-logo.jpg", $filename)) { ·// echo 'download failed'; ·//} ·//-------------------------------------------------------------------------------------------------------------- ·//上传文件 ·//1 ·//file_put_contents("ssh2.sftp://{$resSFTP}/var/testfile/456.txt", 'D:/ab.txt'); ·//2也可以用copy() ·if(!copy("d:/ab.txt", "ssh2.sftp://{$resSFTP}/var/testfile/up".time().".txt")) { ·echo 'upload failed'; ·} ·} else { ·echo "无法在服务器进行身份验证"; ·} ·?·>Aber Den Online-Tutorials zufolge konnte ich es nicht erreichen, also musste ich die Ursache Schritt für Schritt herausfinden.
$strServer = "";//服务器ip $strServerPort = "";//端口号 $strServerUsername = "";//用户名 $strServerPassword = "";//密码 //1连接服务器 $resConnection = ssh2_connect($strServer, $strServerPort); //2验证连 if(ssh2_auth_password($resConnection, $strServerUsername, $strServerPassword)){ //3初始化 SFTP $resSFTP = ssh2_sftp($resConnection);Zuallererst gibt es in den ersten drei Schritten kein Problem. Verwenden Sie die Methoden copy, file_get_content und curl, um das Hoch- und Herunterladen zu implementieren, und es werden 502-Fehler gemeldet. Ich habe den Pfad und andere Probleme überprüft und es gab kein Problem, aber es gelang einfach nicht. Später wird gefolgert, dass auf die Dateiadresse auf dem SFTP-Server nicht zugegriffen werden kann.
"ssh2.sftp://{$resSFTP}/var/testfile/abc.txt"
copy, file_get_content, curl
müssen zum Hochladen verwendet werden ssh2_scp_send
ssh2_scp_recv Herunterladen
Verwandte Empfehlungen:So verbinden Sie PHP mit MySQL – mysqli und PDO
Detaillierte Erläuterung des PHP-Verbindungspools
Das obige ist der detaillierte Inhalt vonPHP stellt eine Verbindung zu SFTP her, um das Hoch- und Herunterladen von Dateien zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!