Plik wgrany przez FTP ma 0 bajtów na serwerze – przyczyny i rozwiązanie
Program FTP pokazuje „przesłano”, a na serwerze leży pusty plik. Skąd się to bierze – od pełnego hostingu po szyfrowany kanał danych – i co pomaga.
W skrócie: jeśli pliki wgrywane przez FTP mają na serwerze 0 bajtów, połączenie zostało nawiązane, ale samo przesyłanie danych się nie udało. Częste przyczyny to pełne miejsce na hostingu, problemy szyfrowanego kanału danych przy FTPS (TLS), firewall blokujący kanał danych albo brak uprawnień do zapisu. Najszybciej często pomaga przejście na SFTP albo inny program FTP.
Jest to szczególnie groźne przy nadpisywaniu istniejącego pliku: stary plik zostaje zastąpiony, a nowy jest pusty. Przy index.php albo wp-config.php strona od razu przestaje działać. Dlatego najpierw: ważnych plików nigdy nie wgrywa się bez kopii.
Dlaczego FTP potrzebuje dwóch połączeń
FTP używa dwóch osobnych kanałów: kanału sterującego dla poleceń typu „utwórz plik” i kanału danych dla samej zawartości. Kanał sterujący prawie zawsze działa, dlatego plik pojawia się na serwerze. Jeśli zawiedzie kanał danych, plik zostaje pusty. Tu leży większość przyczyn.
Najczęstsze przyczyny
1. Pełne miejsce na hostingu
Jeśli miejsce w pakiecie się skończyło, serwer może utworzyć plik, ale nie zapisze w nim treści. Typowe „zjadacze” miejsca: stare kopie zapasowe na serwerze, ogromne logi błędów albo foldery cache. Proszę sprawdzić zajęte miejsce w panelu hostingu.
2. Problemy TLS przy FTPS
Przy szyfrowanym FTP (FTPS, „FTP przez TLS”) kanał danych też musi być szyfrowany. Niektóre serwery wymagają przy tym ponownego użycia szyfrowanej sesji kanału sterującego. Jeśli to się nie uda, przesyłanie zostaje przerwane. W FileZilli w logu pojawia się wtedy często informacja o sesji TLS połączenia danych. Ostatnio miałem przypadek u dużego niemieckiego hostingodawcy, gdzie pliki przy nowej wersji TLS dochodziły puste, a przy TLS 1.2 wszystko działało.
Co pomaga: przetestować inny program FTP (WinSCP, Cyberduck), zaktualizować program albo, jeśli hosting to oferuje, przejść na SFTP.
3. Firewall i tryb pasywny
Kanał danych używa dodatkowych portów. Jeśli firewall w sieci firmowej, routerze albo u hostingodawcy je blokuje, nic nie dociera. W programie FTP warto ustawić tryb przesyłania na „pasywny”. Zwykle jest domyślny i najlepiej działa za routerami. Dla porównania warto spróbować przez inne łącze, np. hotspot z telefonu.
4. Brak uprawnień do zapisu
Jeśli plik docelowy należy do innego użytkownika albo w folderze brakuje uprawnień do zapisu, zapis się nie uda. Zdarza się to np. wtedy, gdy pliki utworzył skrypt albo inny użytkownik FTP.
5. Przerwane przesyłanie
Przy niestabilnym łączu albo bardzo dużych plikach przesyłanie może się przerwać. Dobre programy FTP pokazują to jako błąd. Warto sprawdzić log albo listę „Nieudane transfery”.
SFTP zamiast FTP
SFTP ma z FTP wspólną tylko nazwę. Działa przez SSH, używa jednego połączenia, zwykle przez port 22, więc nie ma problemów z kanałami danych i firewallami. Jest też bezpieczniejszy niż nieszyfrowany FTP. Większość niemieckich hostingodawców oferuje SFTP, często z tymi samymi danymi dostępowymi. Jeśli to możliwe, warto używać SFTP. Słowniczek niemieckiego panelu hostingu znajdą Państwo w artykule Niemiecki hosting po polsku.
Jak sprawdzić po wgraniu
- Porównać w programie FTP rozmiar pliku lokalnie i na serwerze.
- Ważne pliki pobrać z powrotem z serwera i otworzyć.
- Otworzyć stronę, zanim zmieni się kolejne pliki.
Profesjonalna pomoc
Jeśli przez pusty plik strona przestała działać, przywrócę ją i skonfiguruję bezpieczny dostęp przez SFTP. Więcej w usługach naprawa WordPress i przeniesienie strony.