<span><span>--------------------------------------------------
verwenden ftp_pasv Stunde,FTP So konfigurieren Sie den Server, damit keine Fehler vorliegen?Eine kurze Erklärung
--------------------------------------------------
existieren PHP Mitteverwenden ftp_pasv Funktionen ermöglichen den passiven Modus(Passive Mode)verbinden FTP ServerStunde,常常会遇到verbinden失败或数据传输Mitte断的问题。Dies liegt hauptsächlich an FTP Die Serverkonfiguration stimmt nicht mit der Netzwerkumgebung überein,Veranlasst den Client, den Datenkanal nicht korrekt zu etablieren。本文将详细说明verwenden ftp_pasv Stunde,FTP So konfigurieren Sie den Server,才能保证verbinden稳定、Glatte Getriebe。
eins、FTP Eine kurze Beschreibung des aktiven Modus und des passiven Modus
FTP verbinden由控制verbinden和数据verbinden组成。Aktiver Modus(Active Mode)Mitte,Der Client teilt dem Server es mitIPund Ports,Server主动verbinden客户端进行数据传输;Passiver Modus(Passive Mode)Der Server teilt dem Client den Datenport mit,客户端主动verbindenServer。Passiver Modus通常适合客户端处于防火墙或NAT环境Stundeverwenden。
zwei、为什么verwenden ftp_pasv?
existieren现代网络环境Mitte,Kunden befinden sich häufig hinter Firewalls oder Routern,Aktiver Modusverbinden因被动防火墙阻挡而失败。Offen ftp_pasv Passiver Modus后,Kunden können diese Einschränkungen umgehen,主动verbindenServer指定的端口进行数据传输,Dies verbessert die Erfolgsrate。
drei、FTP So konfigurieren Sie den Server?
</span><span><span class="hljs-number">1</span></span><span>. **配置Passiver Modus端口范围**
Server必须设置eins段专用的端口范围供Passiver Modusverwenden,Zum Beispiel </span><span><span class="hljs-number">50000</span></span><span>-</span><span><span class="hljs-number">51000</span></span><span>。
- existieren vsftpd Mitte,Die Konfigurationsdatei ist normalerweise `/etc/vsftpd/vsftpd.conf`,Hinzufügen oder ändern:
```conf
pasv_min_port=</span><span><span class="hljs-number">50000</span></span><span>
pasv_max_port=</span><span><span class="hljs-number">51000</span></span><span>
</span></span>
Andere FTP-Server wie ProfTPD und Pure-FTPD haben ebenfalls ähnliche Konfigurationen.
Öffnen Sie den Firewall -Port <br> Der Passivmodus-Datenportbereich (z. B. 50000-51000 im obigen Beispiel) muss in der Server-Firewall veröffentlicht werden. Andernfalls kann der Client keine Verbindung zu diesen Ports herstellen, was zu einem Ausfall der Übertragung führt.
Fügen Sie beispielsweise Iptables mithilfe von Iptables Regeln hinzu:
<span><span>iptables -I INPUT -p tcp --match multiport --dports 50000:51000 -j ACCEPT
</span></span>
Wenn Sie Firewalld oder andere Firewall -Software verwenden, ist auch die entsprechende Konfiguration erforderlich.
Richten Sie die öffentliche IP des Servers ein
Der Server befindet sich normalerweise im Intranet oder verwendet NAT und muss dem Client die richtige öffentliche IP -Adresse mitteilen.
Konfigurieren Sie in VSFTPD:
<span>pasv_address=Ihr öffentliches NetzwerkIPAdresse
</span>
Andernfalls erhält der Client die Intranet -IP und kann keine Verbindung zum Datenport herstellen.
Konfigurieren Sie die Verbindungszeitüberschreitung und die maximale Anzahl von Verbindungen <br> Passen Sie die Zeitüberschreitungseinstellungen und die maximale Verbindungszahl angemessen an, um eine vorzeitige Verbindungsabschaltung oder Server -Ressourcenmangel zu vermeiden.
V.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$ftp_server</span></span><span> = </span><span><span class="hljs-string">"ftp.example.com"</span></span><span>;
</span><span><span class="hljs-variable">$ftp_user</span></span><span> = </span><span><span class="hljs-string">"username"</span></span><span>;
</span><span><span class="hljs-variable">$ftp_pass</span></span><span> = </span><span><span class="hljs-string">"password"</span></span><span>;
</span><span><span class="hljs-variable">$local_file</span></span><span> = </span><span><span class="hljs-string">"/path/to/local/file.txt"</span></span><span>;
</span><span><span class="hljs-variable">$remote_file</span></span><span> = </span><span><span class="hljs-string">"file.txt"</span></span><span>;
</span><span><span class="hljs-comment">// verbinden FTP</span></span><span>
</span><span><span class="hljs-variable">$conn_id</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_connect</span></span><span>(</span><span><span class="hljs-variable">$ftp_server</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$conn_id</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"无法verbinden FTP Server"</span></span><span>);
}
</span><span><span class="hljs-comment">// Einloggen</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">ftp_login</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-variable">$ftp_user</span></span><span>, </span><span><span class="hljs-variable">$ftp_pass</span></span><span>)) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"FTP Einloggen失败"</span></span><span>);
}
</span><span><span class="hljs-comment">// OffenPassiver Modus</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ftp_pasv</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// Datei hochladen</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ftp_put</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-variable">$remote_file</span></span><span>, </span><span><span class="hljs-variable">$local_file</span></span><span>, FTP_BINARY)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Erfolgreich hochladen"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Upload fehlgeschlagen"</span></span><span>;
}
</span><span><span class="hljs-comment">// 关闭verbinden</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
5. Zusammenfassung Bei Verwendung von FTP_PASV ist der Schlüssel, um den passiven Modus -Portbereich, die Firewall -Regeln und die IP -Adressen des öffentlichen Netzwerks auf der Serverseite korrekt zu konfigurieren. Keiner von ihnen fehlt, andernfalls kann der Client eine Datenverbindung nicht korrekt herstellen. Solange der Server vernünftig konfiguriert und mit dem richtigen PHP -Code kombiniert wird, können Verbindungsfehler in den meisten Passivmodi für FTP -Modi vermieden werden.
Durch die Erläuterung dieses Artikels glaube ich, dass Sie ein klares Verständnis der Konfiguration des Passiven Modus FTP haben und können in tatsächlichen Projekten ftp_pasv reibungslos verwenden, um eine stabile und effiziente Dateiübertragung sicherzustellen.
<span></span>