PHP ftp_put schlägt fehl: Problem analysieren und lösen
Die Unfähigkeit von ftp_put(), korrekt zu funktionieren, kann bei der Übertragung ein frustrierendes Problem sein Dateien über FTP. In PHP liegt eine häufige Ursache für dieses Problem in der standardmäßigen Verwendung des aktiven Modus.
Übertragung zwischen aktivem und passivem Modus
Der aktive Modus schreibt vor, dass der FTP-Server eine Verbindung herstellt an den Client über einen angegebenen Port. Im passiven Modus hingegen überwacht der Server einen zufälligen Port, der dann dem Client bereitgestellt wird. In den meisten Fällen ist die Verwendung des passiven Modus erforderlich, insbesondere wenn sich der FTP-Server hinter einer Firewall oder NAT befindet.
Problem lösen
Um die FTP-Übertragung von PHP auf passiv umzustellen Modus muss man die Funktion ftp_pasv() aufrufen:
$connect = ftp_connect($ftp) or die("Unable to connect to host");
ftp_login($connect, $username, $pwd) or die("Authorization failed");
// Switch to passive mode
ftp_pasv($connect, true) or die("Unable switch to passive mode");
Zusätzliche Überlegungen
In einigen Fällen meldet der FTP-Server möglicherweise eine falsche Meldung IP-Adresse als Antwort auf den PASV-Befehl. Dies kann durch Deaktivieren der Verwendung der PASV-Adresse behoben werden:
ftp_set_option($connect, FTP_USEPASVADDRESS, false);
Best Practices
Während die oben genannten Lösungen das Problem lindern können, besteht die optimale Lösung darin, den FTP-Server so zu konfigurieren, dass er die richtige IP-Adresse und Portkonfiguration verwendet. Dies gewährleistet einen ordnungsgemäßen Betrieb in allen Szenarien.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3