Jak naprawić błąd „Plik jest pusty" przy uploadzie

Spis treści

Wprowadzenie – Problem błędu pustego pliku przy uploadzie

Błąd „Plik jest pusty" to jeden z najbardziej frustrujących problemów, z jakimi można się spotkać podczas pracy z WordPressem. Pojawia się on podczas próby uploadu obrazów, dokumentów czy innych multimediów do biblioteki mediów, uniemożliwiając dodanie pliku mimo że teoretycznie wszystko powinno działać poprawnie.

Ten komunikat jest szczególnie problematyczny, ponieważ może mieć wiele różnych przyczyn – od błędnej konfiguracji serwera, przez limity PHP, po konflikty z wtyczkami bezpieczeństwa. Dla osoby nietechnicznej diagnoza może być trudna, ale z odpowiednim podejściem można szybko zidentyfikować i rozwiązać problem.

W tym artykule przedstawię kompleksowy proces diagnostyczny, który pozwoli Ci krok po kroku znaleźć przyczynę błędu i wdrożyć skuteczne rozwiązanie. Omówimy zarówno najprostsze, jak i bardziej zaawansowane metody naprawy.

Identyfikacja przyczyn błędu uploadu plików

Zanim zaczniesz wprowadzać zmiany w konfiguracji, warto zrozumieć jakie czynniki mogą powodować błąd pustego pliku:

Najczęstsze przyczyny błędu

1. Limity PHP są zbyt niskie

Jeśli rozmiar przesyłanego pliku przekracza maksymalny limit uploadu ustawiony w konfiguracji PHP, serwer odrzuca plik zanim zostanie w pełni przesłany. WordPress otrzymuje wtedy pusty plik i wyświetla komunikat błędu.

2. Nieprawidłowe uprawnienia katalogów

Katalog wp-content/uploads oraz jego podfoldery muszą mieć odpowiednie uprawnienia zapisu. Jeśli PHP nie może zapisać pliku w tym katalogu, pojawi się błąd pustego pliku.

3. Wtyczki bezpieczeństwa blokują upload

Wtyczki takie jak Wordfence, iThemes Security czy Sucuri mogą mieć restrykcyjne reguły blokujące upload pewnych typów plików lub plików przekraczających określone rozmiary.

4. Limity czasu wykonywania PHP

Dla dużych plików proces uploadu może trwać dłużej niż maksymalny czas wykonywania skryptu PHP. Po przekroczeniu limitu serwer przerywa połączenie, pozostawiając pusty plik.

5. Problemy z modułem mod_security

Niektóre serwery mają włączony moduł mod_security, który może fałszywie identyfikować upload plików jako potencjalne zagrożenie i blokować operację.

6. Niewystarczająca pamięć PHP

Przetwarzanie dużych plików graficznych wymaga odpowiedniej ilości pamięci. Jeśli limit pamięci jest zbyt niski, PHP nie może przetworzyć pliku.

Jak przeprowadzić wstępną diagnozę

  • Sprawdź czy błąd pojawia się dla wszystkich plików czy tylko dla określonych typów
  • Przetestuj upload małego pliku (np. kilka kilobajtów) – jeśli działa, problem leży w limitach rozmiaru
  • Sprawdź czy problem występuje tylko w panelu WordPress czy również w innych aplikacjach na tym samym hostingu
  • Sprawdź konsolę przeglądarki (F12) pod kątem błędów JavaScript podczas uploadu
  • Zweryfikuj czy problem występuje również w trybie incognito (bez rozszerzeń przeglądarki)

Sprawdzanie limitów PHP dla uploadu plików

Limity PHP to najpowszechniejsza przyczyna błędu pustego pliku. WordPress wyświetla aktualne limity w interfejsie administracyjnym, ale warto wiedzieć jak je zweryfikować i zwiększyć.

Jak sprawdzić aktualne limity uploadu

Metoda 1: Panel WordPress

  1. Zaloguj się do panelu administracyjnego WordPress
  2. Przejdź do Multimedia → Dodaj nowy
  3. Pod formularzem uploadu zobaczysz informację o maksymalnym rozmiarze pliku

Metoda 2: Strona phpinfo

Możesz utworzyć plik informacyjny PHP, który wyświetli pełną konfigurację serwera. Po wgraniu pliku na serwer odwiedź go w przeglądarce, aby zobaczyć wszystkie parametry PHP. Po sprawdzeniu koniecznie usuń ten plik ze względów bezpieczeństwa.

Metoda 3: Panel hostingowy

Większość paneli hostingowych (cPanel, Plesk, DirectAdmin) ma sekcję konfiguracji PHP, gdzie możesz sprawdzić i edytować limity bezpośrednio w interfejsie graficznym.

Kluczowe parametry PHP wpływające na upload

Istnieje kilka zmiennych konfiguracyjnych PHP, które wpływają na możliwość uploadu plików:

  • Maksymalny rozmiar uploadu – określa jak duży plik może być przesłany
  • Maksymalny rozmiar żądania POST – musi być większy niż maksymalny rozmiar uploadu
  • Limit pamięci – dla operacji na obrazach powinien być wystarczająco wysoki
  • Maksymalny czas wykonywania – dla dużych plików może być potrzebny dłuższy czas
  • Maksymalny czas wejścia – czas na przesłanie danych formularza

Jak zwiększyć limity PHP

Istnieje kilka sposobów na zwiększenie limitów PHP, w zależności od konfiguracji Twojego serwera:

Metoda 1: Edycja pliku php.ini

Jeśli masz dostęp do pliku php.ini, możesz bezpośrednio edytować wartości konfiguracyjne. Plik ten znajduje się zwykle w katalogu głównym serwera lub w panelu hostingowym. Zwiększ odpowiednie wartości dotyczące rozmiaru uploadu, rozmiaru POST, limitu pamięci oraz czasów wykonywania.

Metoda 2: Plik htaccess

W głównym katalogu WordPress znajduje się plik htaccess. Możesz dodać do niego dyrektywy zwiększające limity PHP. Pamiętaj, że ta metoda działa tylko na serwerach Apache z włączonym odpowiednim modułem PHP.

Metoda 3: Plik konfiguracyjny WordPress

Możesz również zwiększyć limit pamięci bezpośrednio w pliku konfiguracyjnym WordPressa poprzez dodanie odpowiedniej stałej definiującej limit pamięci.

Metoda 4: Panel hostingowy

Nowoczesne panele hostingowe oferują graficzny interfejs do modyfikacji ustawień PHP. Znajdź sekcję konfiguracji PHP i zwiększ odpowiednie wartości używając suwaków lub pól tekstowych.

Jeśli interesuje Cię kompleksowe zarządzanie mediami w WordPress, polecam przeczytać artykuł: Instrukcja naprawy niepoprawnych ustawień media handling, gdzie znajdziesz więcej szczegółów na temat konfiguracji systemu obsługi multimediów.

Weryfikacja uprawnień katalogów uploads

Nieprawidłowe uprawnienia plików i katalogów to druga najczęstsza przyczyna błędu pustego pliku. WordPress musi mieć możliwość zapisu do katalogu wp-content/uploads i jego podfolderów.

Jakie uprawnienia są prawidłowe?

Zalecane uprawnienia dla WordPress:

  • Katalogi: 755 (odczyt, zapis i wykonywanie dla właściciela; odczyt i wykonywanie dla grupy i innych)
  • Pliki: 644 (odczyt i zapis dla właściciela; tylko odczyt dla grupy i innych)
  • Plik konfiguracyjny: 440 lub 400 (tylko odczyt dla właściciela i grupy lub tylko właściciela)

Nigdy nie używaj uprawnień 777 – choć rozwiązują problem z dostępem, stanowią poważne zagrożenie bezpieczeństwa, pozwalając każdemu na modyfikację plików.

Jak sprawdzić uprawnienia przez FTP

  1. Połącz się z serwerem przez klienta FTP (FileZilla, WinSCP, Cyberduck)
  2. Przejdź do katalogu wp-content/uploads
  3. Kliknij prawym przyciskiem na katalog uploads i wybierz właściwości lub informacje o pliku
  4. Sprawdź wartość liczbową uprawnień (powinna być 755)
  5. Sprawdź również uprawnienia dla podfolderów z podziałem na lata i miesiące

Jak zmienić uprawnienia

Przez klienta FTP:

  1. Zaznacz katalog uploads
  2. Kliknij prawym przyciskiem i wybierz opcję uprawnień pliku
  3. Ustaw wartość numeryczną na 755
  4. Zaznacz opcję rekurencyjnego stosowania do podfolderów
  5. Zatwierdź zmiany

Przez SSH (dla zaawansowanych użytkowników):

Możesz użyć komendy chmod w terminalu SSH, aby rekurencyjnie zmienić uprawnienia dla katalogu uploads. Najpierw ustaw uprawnienia dla katalogów, a następnie dla plików w środku.

Sprawdzanie właściciela plików

Czasami problem leży nie w uprawnieniach, ale w nieprawidłowym właścicielu plików. PHP musi być uruchamiany przez tego samego użytkownika, który jest właścicielem katalogów WordPress.

Możesz sprawdzić właściciela plików przez klienta FTP lub SSH. Jeśli właścicielem jest użytkownik root zamiast użytkownika serwera WWW (np. www-data, apache, nginx), musisz zmienić właściciela używając odpowiedniej komendy w SSH.

Diagnozowanie problemów z konfiguracją serwera

Czasami błąd pustego pliku wynika z konfiguracji samego serwera WWW lub dodatkowych modułów bezpieczeństwa. Oto jak zdiagnozować i rozwiązać te problemy.

Moduł mod_security

Mod_security to moduł firewall dla Apache, który może blokować pewne typy żądań HTTP uznawane za potencjalnie szkodliwe. Niestety, upload plików czasami wyzwala fałszywe alarmy.

Jak sprawdzić czy mod_security blokuje upload:

  • Sprawdź logi błędów serwera (dostępne w panelu hostingowym)
  • Poszukaj wpisów zawierających słowo ModSecurity lub frazę wskazującą na blokowanie przez politykę bezpieczeństwa
  • Jeśli znajdziesz takie wpisy, oznacza to że mod_security blokuje żądanie

Rozwiązanie:

Możesz wyłączyć mod_security dla określonych katalogów poprzez dodanie odpowiednich dyrektyw w pliku htaccess katalogu wp-admin. Alternatywnie, skontaktuj się z działem wsparcia hostingu, aby dodali wyjątek dla uploadu plików w WordPress.

Limity bufora Nginx

Jeśli Twój serwer używa Nginx zamiast Apache, może występować problem z domyślnymi limitami bufora dla ciała żądania klienta.

Nginx ma domyślny limit rozmiaru ciała żądania ustawiony na zaledwie jeden megabajt. Upload większych plików wymaga zwiększenia tego limitu w pliku konfiguracyjnym Nginx. Musisz skontaktować się z administratorem serwera lub działem wsparcia hostingu, aby zwiększyli tę wartość.

Timeout połączeń

Dla bardzo dużych plików lub wolnych połączeń internetowych, standardowe limity timeout mogą być zbyt krótkie. Zarówno Apache jak i Nginx mają konfigurowalne limity czasu oczekiwania na żądanie.

Rozwiązaniem jest zwiększenie wartości timeout w konfiguracji serwera WWW. Typowe wartości to od trzydziestu sekund do kilku minut, w zależności od przewidywanych rozmiarów plików.

Rozwiązywanie konfliktów z wtyczkami bezpieczeństwa

Wtyczki bezpieczeństwa to nieocenione narzędzie ochrony WordPress, ale ich zbyt restrykcyjne ustawienia mogą blokować legalne operacje, w tym upload plików.

Najczęstsze wtyczki powodujące problemy:

1. Wordfence Security

Wordfence ma zaawansowany firewall aplikacji, który może blokować upload określonych typów plików lub plików przekraczających ustalone limity.

Jak sprawdzić:

  • Przejdź do Wordfence → Firewall → All Firewall Options
  • Sprawdź sekcję dotyczącą bloków plików i typów MIME
  • Sprawdź logi Wordfence pod kątem zablokowanych żądań

Rozwiązanie:

  • Dodaj wyjątek dla katalogu wp-admin/async-upload.php
  • Zwiększ limity dozwolonych rozmiarów plików
  • Tymczasowo wyłącz firewall, aby potwierdzić że to on powoduje problem

2. iThemes Security

iThemes Security może ograniczać typy dozwolonych plików i monitorować zmiany w systemie plików.

Rozwiązanie:

  • Przejdź do Security → Settings → File Change Detection
  • Upewnij się że katalog uploads jest wykluczony z monitorowania
  • Sprawdź sekcję Advanced dotyczącą restrykcji typów plików

3. Sucuri Security

Sucuri ma hardening serwera, który może modyfikować uprawnienia plików i katalogów.

Rozwiązanie:

  • Sprawdź ustawienia hardeningu
  • Upewnij się że uprawnienia katalogu uploads nie zostały zmienione
  • Sprawdź logi Sucuri pod kątem zablokowanych operacji

Metodyka testowania wtyczek

Jeśli podejrzewasz, że problem leży w wtyczkach bezpieczeństwa, zastosuj następujące kroki:

  1. Utwórz pełny backup strony
  2. Wyłącz wszystkie wtyczki bezpieczeństwa
  3. Spróbuj uploadować plik – jeśli działa, problem leży w jednej z wtyczek
  4. Włączaj wtyczki pojedynczo, testując upload po każdej aktywacji
  5. Po zidentyfikowaniu problematycznej wtyczki, przejrzyj jej ustawienia i dostosuj konfigurację

Testowanie uploadu różnych typów plików

Czasami błąd pustego pliku występuje tylko dla określonych typów plików. WordPress ma wbudowane ograniczenia dozwolonych typów MIME, a wtyczki mogą dodatkowo je modyfikować.

Dozwolone typy plików w WordPress

WordPress domyślnie pozwala na upload popularnych formatów graficznych (JPEG, PNG, GIF, WebP), dokumentów (PDF, DOC, DOCX), archiwów (ZIP) oraz plików multimedialnych (MP3, MP4). Inne typy plików mogą być blokowane ze względów bezpieczeństwa.

Jak przetestować różne typy plików:

  1. Przygotuj małe (kilka kilobajtów) pliki testowe w różnych formatach
  2. Spróbuj uploadować każdy z nich przez bibliotekę mediów
  3. Zanotuj które typy działają, a które powodują błąd
  4. Jeśli tylko określone typy nie działają, problem leży w restrykcjach MIME

Rozszerzanie dozwolonych typów MIME

Możesz dodać obsługę dodatkowych typów plików używając odpowiedniego filtru w pliku functions motywu potomnego lub przez wtyczkę. Uważaj jednak, aby nie dodawać potencjalnie niebezpiecznych typów plików jak pliki wykonywalne.

Sprawdzanie bloków na poziomie hostingu

Niektóre hosty mają własne systemy bezpieczeństwa, które blokują upload pewnych typów plików niezależnie od ustawień WordPress. Sprawdź dokumentację hostingu lub skontaktuj się z supportem, aby dowiedzieć się czy mają takie ograniczenia.

Monitorowanie logów serwera podczas uploadu

Logi serwera to najlepsze źródło informacji o rzeczywistych przyczynach błędu pustego pliku. Zawierają szczegółowe komunikaty błędów, które nie są wyświetlane w interfejsie WordPress.

Gdzie znaleźć logi serwera

Panel hostingowy (cPanel, Plesk):

  • Zaloguj się do panelu hostingowego
  • Znajdź sekcję Logi lub Error Logs
  • Pobierz najnowszy plik logu błędów

Przez FTP lub SSH:

Logi błędów PHP zwykle znajdują się w katalogu logów serwera. Dokładna lokalizacja zależy od konfiguracji serwera, ale typowe ścieżki to katalogi logów Apache lub Nginx oraz katalogi logów PHP.

Co szukać w logach

Podczas próby uploadu pliku, przeglądaj logi w poszukiwaniu:

  • Komunikatów o przekroczeniu limitów pamięci lub rozmiaru pliku
  • Błędów uprawnień (permission denied)
  • Komunikatów od mod_security lub innych modułów bezpieczeństwa
  • Timeout errors – przekroczenie czasu wykonywania skryptu
  • Błędów PHP Fatal Error związanych z brakiem pamięci

Włączanie debugowania WordPress

WordPress ma wbudowany tryb debugowania, który zapisuje błędy PHP do pliku debug.log. Aby go włączyć, edytuj plik konfiguracyjny WordPress i ustaw odpowiednie stałe definiujące tryb debugowania, logowanie błędów oraz wyświetlanie błędów.

Po włączeniu debugowania, plik debug.log będzie tworzony w katalogu wp-content. Sprawdź ten plik po nieudanej próbie uploadu – powinien zawierać szczegółowe informacje o błędzie.

Debugowanie AJAX

Upload plików w WordPress działa przez AJAX. Możesz monitorować żądania AJAX w konsoli przeglądarki:

  1. Otwórz narzędzia deweloperskie przeglądarki (F12)
  2. Przejdź do zakładki Network
  3. Spróbuj uploadować plik
  4. Znajdź żądanie do async-upload.php
  5. Sprawdź odpowiedź serwera – może zawierać komunikaty błędów

Implementacja alternatywnych metod uploadu

Gdy standardowe metody rozwiązywania problemu zawiodą, możesz rozważyć alternatywne sposoby uploadowania plików do WordPress.

Upload przez FTP

Najprostrza metoda omijająca ograniczenia PHP:

  1. Połącz się z serwerem przez klienta FTP
  2. Przejdź do katalogu wp-content/uploads z odpowiednim podziałem na rok i miesiąc
  3. Wgraj pliki bezpośrednio do tego katalogu
  4. W panelu WordPress użyj wtyczki do dodania uploadowanych plików do biblioteki mediów

Wtyczki do zarządzania multimediami

Istnieją wtyczki oferujące alternatywne metody uploadu:

1. Media Library Assistant

Zaawansowane narzędzie do zarządzania biblioteką mediów, które pozwala na import plików już istniejących na serwerze.

2. WP Media Folder

Oferuje organizację mediów w foldery oraz alternatywne metody uploadu, w tym upload z Google Drive czy Dropbox.

3. FileBird

Podobnie jak WP Media Folder, pozwala na lepszą organizację i oferuje dodatkowe opcje importu.

Upload poprzez import XML

Dla zdjęć powiązanych z wpisami, możesz użyć standardowego importera WordPress:

  1. Wgraj pliki przez FTP do katalogu uploads
  2. Utwórz plik eksportu WXR zawierający odniesienia do tych plików
  3. Użyj narzędzia Import w panelu WordPress
  4. Zaznacz opcję pobierania załączników

API REST WordPress

Dla zaawansowanych użytkowników, WordPress REST API oferuje endpoint do uploadu mediów. Możesz napisać własny skrypt, który będzie uploadował pliki bezpośrednio przez API, omijając interfejs administracyjny.

Podsumowanie – Zapewnienie poprawnego działania uploadu plików

Błąd „Plik jest pusty" przy uploadzie to częsty problem WordPress, ale z odpowiednim podejściem diagnostycznym można go szybko rozwiązać. Kluczem jest systematyczne sprawdzanie potencjalnych przyczyn.

Szybka checklista rozwiązywania problemu:

Krok 1: Podstawowa diagnostyka

  • Sprawdź czy błąd występuje dla wszystkich plików czy tylko określonych typów
  • Przetestuj upload małego pliku (kilka KB)
  • Sprawdź konsolę przeglądarki pod kątem błędów JavaScript

Krok 2: Weryfikacja limitów PHP

  • Sprawdź aktualne limity w Multimedia → Dodaj nowy
  • Zwiększ limity przez odpowiednie pliki konfiguracyjne lub panel hostingowy
  • Upewnij się że limit POST jest większy niż limit uploadu
  • Zwiększ limit pamięci PHP i czasy wykonywania

Krok 3: Sprawdzanie uprawnień

  • Zweryfikuj uprawnienia katalogu wp-content/uploads (powinny być 755)
  • Sprawdź uprawnienia plików (powinny być 644)
  • Upewnij się że właścicielem katalogów jest użytkownik serwera WWW

Krok 4: Testowanie wtyczek

  • Wyłącz wszystkie wtyczki bezpieczeństwa
  • Przetestuj upload
  • Włączaj wtyczki pojedynczo, identyfikując problematyczną
  • Dostosuj ustawienia zidentyfikowanej wtyczki

Krok 5: Analiza logów

  • Sprawdź logi błędów serwera
  • Włącz debugowanie WordPress
  • Przeglądaj żądania AJAX w konsoli przeglądarki
  • Szukaj komunikatów od mod_security

Krok 6: Konfiguracja serwera

  • Sprawdź czy mod_security nie blokuje uploadu
  • Dla Nginx zweryfikuj limity bufora ciała żądania
  • Zwiększ timeout połączeń dla dużych plików

Najczęstsze błędy i jak ich unikać:

Błąd #1: Zbyt niskie limity PHP

Rozwiązanie: Ustaw maksymalny rozmiar uploadu na minimum sześćdziesiąt cztery megabajty, a POST na sto dwadzieścia osiem megabajtów.

Błąd #2: Uprawnienia 777

Rozwiązanie: Nigdy nie używaj 777 – zawsze stosuj 755 dla katalogów i 644 dla plików.

Błąd #3: Brak regularnego monitorowania

Rozwiązanie: Regularnie sprawdzaj logi błędów i testuj upload różnych typów plików.

Błąd #4: Zbyt restrykcyjne wtyczki bezpieczeństwa

Rozwiązanie: Dopasuj ustawienia wtyczek, dodaj wyjątki dla katalogu uploads.

Podsumowanie

Poprawnie skonfigurowany system uploadu plików to podstawa wygodnej pracy z WordPress. Większość problemów z pustymi plikami da się rozwiązać w kilka minut poprzez zwiększenie limitów PHP i weryfikację uprawnień.

Pamiętaj o regularnym testowaniu uploadu różnych typów i rozmiarów plików, szczególnie po aktualizacjach WordPress, PHP lub zmianach w konfiguracji serwera. Proaktywne podejście pozwoli uniknąć niespodzianek w przyszłości.

Jeśli żadna z przedstawionych metod nie rozwiązała problemu, skontaktuj się z działem wsparcia technicznego hostingu – mogą istnieć specyficzne ograniczenia na poziomie serwera, które wymagają interwencji administratora.

Masz problemy z uploadem plików w WordPress? Chętnie pomożemy Ci zdiagnozować i rozwiązać problem z pustymi plikami. Skontaktuj się z nami, aby uzyskać profesjonalne wsparcie techniczne.