Der von ftp_nb_continue zurückgegebene Wert kann ftp_finished oder ftp_failed werden, um anzuzeigen, ob die Übertragung abgeschlossen ist. Wenn ftp_failed zurückgegeben wird, bedeutet dies, dass die Übertragung fehlgeschlagen ist. Wenn ftp_finished zurückgegeben wird, bedeutet dies, dass die Übertragung erfolgreich abgeschlossen wurde. In einigen Fällen können Sie jedoch auf das Problem einer Ausnahme als Rückgabewert stoßen.
Lösung:
Stellen Sie zunächst sicher, dass die FTP -Verbindung normal ist, und verwenden Sie Funktionen wie FTP_CONNECT und FTP_LOGIN, um zu überprüfen, ob die Verbindung erfolgreich ist.
Überprüfen Sie, ob der Zielpfad und die Berechtigungen korrekt sind. Es kann sein, dass die Datei keine Schreibberechtigungen hat oder der Zielordner nicht verfügbar ist.
Verwenden Sie FTP_Error , um Fehlerinformationen vom FTP -Server zu erhalten, wodurch das Problem gefunden wird.
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> == FTP_FAILED) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Übertragung fehlgeschlagen: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">ftp_error</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</span></span><span>);
}
</span></span>Bei Verwendung von FTP_NB_Continue für die Dateiübertragung kann die Zeitüberschreitungszeit der FTP -Verbindung nicht ordnungsgemäß festgelegt werden, was dazu führt, dass die Verbindung zu einer Auszeit ist, insbesondere bei der Übertragung großer Dateien.
Lösung:
Verwenden Sie FTP_SET_OPTION , um die Timeout -Option von FTP wie FTP_Timeout festzulegen, um die Verbreitung von Verbindungen zu vermeiden.
<span><span><span class="hljs-title function_ invoke__">ftp_set_option</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</span></span><span>, FTP_TIMEOUT_SEC, </span><span><span class="hljs-number">90</span></span><span>); </span><span><span class="hljs-comment">// Stellen Sie die Zeitüberschreitungszeit auf90Zweite</span></span><span>
</span></span>Stellen Sie sicher, dass die Netzwerkverbindung zwischen dem Server und dem Client stabil ist und dass der FTP -Server aufgrund einer übermäßigen Last nicht verzögert.
Manchmal schließt der FTP -Server die Verbindung während der Übertragung versehentlich und führt dazu, dass FTP_NB_Continue einen ftp_failed -Fehler zurückgibt.
Lösung:
Überprüfen Sie die Konfiguration des FTP -Servers, um sicherzustellen, dass die Leerlaufverbindung nicht zu kurz ist.
Richten Sie den automatischen Wiederverbindenmechanismus im Code ein. Wenn die Übertragung fehlschlägt, können Sie versuchen, sich wieder zu verbinden und weiter hochzuladen oder herunterzuladen.
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> == FTP_FAILED) {
</span><span><span class="hljs-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</span></span><span>);
</span><span><span class="hljs-variable">$ftp_connection</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-title function_ invoke__">ftp_login</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</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>Pfadfehler sind ein weiterer häufiger Fehler. Stellen Sie sicher, dass der Upload -Pfad und der Zielpfad der Datei korrekt sind und dass kein Verschreibungsverschiebung vorhanden ist.
Lösung:
Verwenden Sie die Funktion ftp_chdir , um zum Zielverzeichnis zu wechseln, um sicherzustellen, dass die Datei an den richtigen Speicherort hochgeladen werden kann.
Verwenden Sie vor der Dateiübertragung FTP_PWD , um das aktuelle Verzeichnis zu erhalten, und überprüfen Sie, ob der Pfad korrekt ist.
<span><span><span class="hljs-variable">$currentDir</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_pwd</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Aktuelles Verzeichnis: "</span></span><span> . </span><span><span class="hljs-variable">$currentDir</span></span><span>;
</span></span>Wenn der Zielordner auf dem FTP -Server keine Schreibberechtigungen hat, kann FTP_NB_Continue die Datei möglicherweise nicht erfolgreich hochladen. Dieses Problem tritt normalerweise in gemeinsamen Hosting -Umgebungen auf.
Lösung:
Stellen Sie sicher, dass der Zielordner über die richtigen Berechtigungseinstellungen verfügt, die normalerweise auf 755 oder 777 festgelegt werden können (abhängig von der Situation).
Wenn Sie den Server über CPANEL oder ähnliche Tools verwalten, können Sie die Ordnerberechtigungen direkt über den Dateimanager anpassen.
<span><span><span class="hljs-title function_ invoke__">ftp_chmod</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</span></span><span>, </span><span><span class="hljs-number">0777</span></span><span>, </span><span><span class="hljs-variable">$remote_file</span></span><span>);
</span></span>ftp_nb_continue ist nicht blockiert, aber Datenverbindungen (d. H. Datenkanäle, die für Dateitransfers verwendet werden) können blockiert werden. Wenn Sie die PASV -Verbindung (Passive Modus) verwenden, kann die Datenverbindung aufgrund von Firewall oder anderen Netzwerkbeschränkungen fehlschlagen.
Lösung:
Versuchen Sie, in den aktiven Modus zu wechseln, um die Einschränkungen der Firewall zu umgehen, und verwenden Sie die Funktion ftp_pasv , um in den passiven Modus zu wechseln.
<span><span><span class="hljs-title function_ invoke__">ftp_pasv</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>); </span><span><span class="hljs-comment">// Verwenden Sie den aktiven Modus</span></span><span>
</span></span>Darüber hinaus können Sie auch versuchen, die Portkonfiguration des FTP -Clients zu ändern, um eingeschränkte Ports zu vermeiden.
Wenn die zwischengespeicherten Daten während der Dateiübertragung nicht rechtzeitig aktualisiert werden, kann dies zu einem unvollständigen Hochladen oder Herunterladen der Datei führen oder der Dateiinhalt inkonsistent ist.
Lösung:
Stellen Sie vor dem Übertragen von Dateien sicher, dass Sie einen möglichen Cache schließen, oder verwenden Sie die Funktionen ftp_nb_put und ftp_nb_get , um Dateien direkt zu übertragen, um Cache -Interferenzen zu vermeiden.
PHP kann aufgrund von Ressourcenbeschränkungen Dateiübertragungsvorgänge abbrechen, insbesondere wenn die Dateiübertragungen sehr groß sind. Gemeinsame Ressourcenbeschränkungen umfassen maximale Ausführungszeit, Speicherbeschränkung usw.
Lösung:
Das maximale Ausführungszeitlimit für PHP kann durch set_time_limit (0) storniert werden.
<span><span><span class="hljs-title function_ invoke__">set_time_limit</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>); </span><span><span class="hljs-comment">// Die maximale Ausführungszeitlimit stornieren</span></span><span>
</span></span>Wenn Sie Probleme mit der Speichergrenze stoßen, können Sie die Speichergrenze von PHP -Skripten durch INI_SET erhöhen ('memory_limit', '512m') .