Aktueller Standort: Startseite> Neueste Artikel> So verwenden Sie FTP_PASV mit FTP_CONNECT, wie Sie Schritt für Schritt die Einstellungen für die FTP -Verbindungs- und Passivmodus -Einstellungen implementieren

So verwenden Sie FTP_PASV mit FTP_CONNECT, wie Sie Schritt für Schritt die Einstellungen für die FTP -Verbindungs- und Passivmodus -Einstellungen implementieren

M66 2025-06-28

Bei der Verwendung von PHP für FTP -Operationen können wir häufig auf Verbindungszeitüberschreitungen oder Daten übertragen werden. Insbesondere in einigen Firewall- oder NAT -Netzwerkumgebungen kann der aktive Modus dazu führen, dass FTP -Datenverbindungen fehlschlagen. Zu diesem Zeitpunkt ist der passive Modus der Schlüssel zur Lösung des Problems. In diesem Artikel werden Sie Schritt für Schritt erforderlich, um zu verstehen, wie FTP_CONNECT und FTP_PASV verwendet werden, um stabile FTP -Verbindungen und Datenübertragung zu erreichen.

1. Verstehen Sie den Unterschied zwischen aktiven und passiven Modi von FTP

Im aktiven Modus initiiert der Client den mit dem Server verbundenen Steuerport (Standard 21), und der Server stellt dann eine Verbindung zu einem zufälligen Port des Clients her, um Daten zu übertragen. Dies kann in einigen Netzwerkumgebungen abgefangen werden.

Im passiven Modus initiiert der Client nicht nur Steuerverbindungen, sondern auch aktiv Datenverbindungen, was einfacher durch die Firewall und die NAT zu durchlaufen ist.

Daher ist es ein wichtiger Schritt, die Kompatibilität und die Übertragungserfolgsquote ausdrücklich auf den passiven Modus in PHP -Skripten einzuschalten.

2. Verwenden Sie ftp_connect , um eine Verbindung herzustellen

FTP_CONNECT ist eine integrierte Funktion zur Verbindung zu einem FTP-Server. Die Syntax ist wie folgt:

 <span><span><span class="hljs-title function_ invoke__">ftp_connect</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$hostname</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$port</span></span><span> = </span><span><span class="hljs-number">21</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$timeout</span></span><span> = </span><span><span class="hljs-number">90</span></span><span>): FTP\Connection|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>

Beispielcode:

 <span><span><span class="hljs-variable">$ftp_host</span></span><span> = </span><span><span class="hljs-string">'ftp.example.com'</span></span><span>;
</span><span><span class="hljs-variable">$ftp_port</span></span><span> = </span><span><span class="hljs-number">21</span></span><span>;

</span><span><span class="hljs-variable">$conn</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_connect</span></span><span>(</span><span><span class="hljs-variable">$ftp_host</span></span><span>, </span><span><span class="hljs-variable">$ftp_port</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$conn</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Es kann keine Verbindung zu herstellen können FTP Server:<span class="hljs-subst">$ftp_host</span></span></span><span>");
}
</span></span>

3. Verwenden Sie FTP_Login , um sich bei FTP -Benutzern anzumelden

Nachdem die Verbindung hergestellt wurde, müssen wir FTP_login verwenden, um sich anzumelden:

 <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-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</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-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$conn</span></span><span>);
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"FTP Fehler bei der Anmeldung!"</span></span><span>);
}
</span></span>

4. Setzen Sie den passiven Modus: ftp_pasv

Nachdem die Verbindung erfolgreich und angemeldet ist, müssen Sie FTP_PASV aufrufen, um den passiven Modus zu aktivieren , bevor Datenübertragungsfunktionen (z. B. ftp_get , ftp_put usw.) ausgeführt werden :

 <span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">ftp_pasv</span></span><span>(</span><span><span class="hljs-variable">$conn</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>)) {
    </span><span><span class="hljs-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$conn</span></span><span>);
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Der passive Modus kann nicht eingeschaltet werden!"</span></span><span>);
}
</span></span>

Setzen Sie auf True , um den passiven Modus zu aktivieren, und false, um den aktiven Modus zu verwenden.

5. Vollständiger Beispielcode

Integrieren Sie die obigen Schritte, um das folgende vollständige Beispiel zu erhalten:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>

</span><span><span class="hljs-variable">$ftp_host</span></span><span> = </span><span><span class="hljs-string">'ftp.example.com'</span></span><span>;
</span><span><span class="hljs-variable">$ftp_port</span></span><span> = </span><span><span class="hljs-number">21</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-comment">// 1. Eine Verbindung herstellen</span></span><span>
</span><span><span class="hljs-variable">$conn</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_connect</span></span><span>(</span><span><span class="hljs-variable">$ftp_host</span></span><span>, </span><span><span class="hljs-variable">$ftp_port</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$conn</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Es kann keine Verbindung zu herstellen können FTP Server!"</span></span><span>);
}

</span><span><span class="hljs-comment">// 2. 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</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-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$conn</span></span><span>);
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"FTP Fehler bei der Anmeldung!"</span></span><span>);
}

</span><span><span class="hljs-comment">// 3. Aktivieren Sie den passiven Modus</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">ftp_pasv</span></span><span>(</span><span><span class="hljs-variable">$conn</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>)) {
    </span><span><span class="hljs-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$conn</span></span><span>);
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Der passive Modus kann nicht eingeschaltet werden!"</span></span><span>);
}

</span><span><span class="hljs-comment">// 4. Beispiel:Laden Sie eine Datei herunter</span></span><span>
</span><span><span class="hljs-variable">$remote_file</span></span><span> = </span><span><span class="hljs-string">'remote/path/file.txt'</span></span><span>;
</span><span><span class="hljs-variable">$local_file</span></span><span> = </span><span><span class="hljs-string">'local_copy.txt'</span></span><span>;

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ftp_get</span></span><span>(</span><span><span class="hljs-variable">$conn</span></span><span>, </span><span><span class="hljs-variable">$local_file</span></span><span>, </span><span><span class="hljs-variable">$remote_file</span></span><span>, FTP_BINARY)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Datei erfolgreich herunterladen!"</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">"Datei -Download fehlgeschlagen!"</span></span><span>;
}

</span><span><span class="hljs-comment">// 5. Schließen Sie die Verbindung</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$conn</span></span><span>);
</span></span>

6. Dinge zu beachten

  1. FTP_PASV muss nach dem Erfolg von ftp_login aufgerufen werden.

  2. Einige FTP -Server unterstützen den passiven Modus standardmäßig nicht und müssen auf der Serverseite konfiguriert werden.

  3. Verwenden Sie bei der Begegnung mit Verbindungsproblemen FTP_RAW , um die Serverreaktion anzuzeigen, um Probleme bei der Fehlerbehebung zu erhalten.

7. Schlussfolgerung

Durch Kombinieren von FTP_CONNECT , FTP_LOGIN und FTP_PASV können wir FTP verwenden, um Dateien in komplexen Netzwerkumgebungen stabil zu übertragen. In der tatsächlichen Entwicklung ist dieser Prozess besonders wichtig. Durch das Beherrschen der Verwendung dieser Funktionen können Sie verschiedene FTP -Betriebsprobleme leichter behandeln. Ich hoffe, dass die Erklärung in diesem Artikel Ihnen helfen kann, die Einstellungen für die FTP -Verbindung und die passiven Modus erfolgreich zu erkennen.