
🔧 Jak naprawić błąd przesyłania obrazu w WordPress
Błąd przesyłania obrazu w WordPress uderza w najmniej odpowiednim momencie. Przygotowuje Pan wpis, dobiera zdjęcie, klika „Prześlij", a WordPress w milczeniu pokazuje „HTTP Error" lub odmawia zapisania pliku bez wyjaśnienia. I byłoby dobrze, gdyby zdarzyło się to raz, ale u niektórych administratorów przesyłanie pada regularnie co kilka dni.
Przyczyna rzadko leży na wierzchu. Winowajcą może być cokolwiek: rozsynchronizowane uprawnienia po migracji, konflikt wtyczek bezpieczeństwa, obcięty limit pamięci na taniej taryfie współdzielonej albo ModSecurity, które uznało Pana obrazek za atak. Dobra wiadomość: prawie wszystkie przyczyny usuwa się bez programisty i bez telefonu do pomocy technicznej hostingu.
W tym poradniku znajdzie Pan pełny łańcuch diagnostyki i naprawy błędu przesyłania obrazów. Od prostych kroków (zmiana przeglądarki, zmiana nazwy pliku) po działania serwerowe (edycja php.ini, .htaccess i wp-config.php). Proszę brać i naprawiać, większość przypadków zamyka się w 5-10 minut.
💡 Szybki przegląd:
- Proszę sprawdzić uprawnienia do folderu
/wp-content/uploads/przez FTP lub Menedżera plików cPanel: 744 dla folderów i 644 dla plików. - W przypadku błędu HTTP proszę przejść łańcuch: wyczyszczenie pamięci podręcznej przeglądarki → zmiana nazwy pliku → kompresja → dezaktywacja wtyczek → zwiększenie pamięci PHP → zmiana wersji PHP.
- Dla błędów „Missing a temporary folder" i przekroczenia limitu rozmiaru wystarczy kilka linijek w
wp-config.phporaz.htaccess. - Użytkownicy GoDaddy i DreamHost znajdą osobne rozwiązania na końcu.
Dlaczego w ogóle pojawia się błąd przesyłania obrazów
WordPress przechowuje wszystkie pliki multimedialne w /wp-content/uploads/. Aby zapisać tam obrazek, proces PHP potrzebuje uprawnień do zapisu. Jeśli uprawnienia są rozsynchronizowane, a zdarza się to podczas aktualizacji serwera, migracji, zmiany hostingu, a nawet po automatycznej łatce PHP, przesyłanie pada w milczeniu.

Druga grupa przyczyn: konfiguracja PHP, a konkretnie limit pamięci, parametry upload_max_filesize i post_max_size oraz ścieżka do folderu tymczasowego. Jeśli którykolwiek z tych parametrów nie spełnia wymagań, WordPress nie przepuści pliku. Na tanich taryfach współdzielonych dostawcy hostingu często przycinają bufory ostrzej, niż wskazuje phpinfo(), i widzi Pan „HTTP Error" bez cienia wskazówki co do prawdziwej przyczyny.

I wreszcie konflikty. Wtyczka bezpieczeństwa przechwytuje żądanie POST, motyw nadpisuje obsługę multimediów, ModSecurity na poziomie serwera WWW uznaje przesłanie za zagrożenie. Diagnostyka znajduje się w następnym rozdziale.
1. Proszę sprawdzić uprawnienia do folderu uploads
Najczęstsza przyczyna to nieprawidłowe uprawnienia do /wp-content/uploads/. WordPress nie może pisać do folderu i w milczeniu odmawia przesłania. Rozwiązanie: ustawić prawidłowy CHMOD przez FTP.
Proszę połączyć się ze stroną przez klienta FTP, na przykład FileZilla. Proszę przejść do /wp-content/, znaleźć folder uploads, kliknąć prawym przyciskiem myszy i wybrać „Prawa dostępu do pliku" (File permissions):

W oknie, które się otworzy, proszę wpisać 744 w polu wartości numerycznej. Proszę zaznaczyć „Rekursja w podkatalogach" (Recurse into subdirectories) oraz „Zastosuj tylko do katalogów" (Apply to directories only). Proszę kliknąć OK.

Jeśli 744 nie rozwiązało problemu, proszę spróbować 755: właściciel otrzymuje odczyt, zapis i wykonanie, grupa i pozostali, odczyt i wykonanie.
Teraz uprawnienia dla plików wewnątrz uploads. Ponownie prawy przycisk myszy na folderze uploads → „Prawa dostępu do pliku". Proszę wpisać 644, zaznaczyć „Rekursja w podkatalogach" oraz „Zastosuj tylko do plików" (Apply to files only). OK.

Proszę spróbować przesłać obraz ponownie. W większości przypadków błąd znika natychmiast po tej procedurze. Jeśli nie pomogło, idziemy dalej.
2. Proszę przejść łańcuch rozwiązań błędu HTTP
Błąd HTTP podczas przesyłania jest najbardziej nieprzyjemny, ponieważ WordPress nie zostawia śladów w logach. Po prostu napis „HTTP Error" i tyle. Trzeba działać metodą eliminacji. Poniżej łańcuch od prostych do złożonych kroków: proszę przechodzić po kolei, aż przesyłanie zacznie działać.
2.1. Proszę odświeżyć stronę lub zmienić przeglądarkę
Brzmi banalnie, ale działa częściej, niż się wydaje. Czasami sesja WordPressa wygasa i po ponownym zalogowaniu błąd znika. Proszę odświeżyć stronę z twardym resetem pamięci podręcznej: Ctrl+F5 na Windows, Cmd+Shift+R na Macu. Jeśli nie pomogło, proszę otworzyć stronę w innej przeglądarce. Jeśli w Chrome błąd występuje, a w Firefoksie nie, problem leży w rozszerzeniach lub pamięci podręcznej konkretnej przeglądarki.
2.2. Proszę wyczyścić pamięć podręczną przeglądarki
Pamięć podręczna przechowuje nieaktualne skrypty i style, które mogą kolidować z modułem przesyłania multimediów WordPressa. Skróty klawiszowe do pełnego resetu:

- Windows (Chrome, Firefox, Edge):
Ctrl + Shift + Delete→ „Wyczyść dane przeglądania" - Mac (Chrome, Firefox):
Cmd + Shift + Delete - Safari:
Shift + клик по кнопке перезагрузки
Można też wejść w ustawienia przeglądarki i usunąć pamięć podręczną ręcznie; ścieżka zależy od przeglądarki, ale zawsze znajduje się w sekcji „Historia" lub „Prywatność".
2.3. Zmień nazwę pliku obrazu
WordPress automatycznie dodaje numer do zduplikowanych nazw (image-1.png, image-2.png), ale czasem ten mechanizm szwankuje. Przed przesłaniem zmień nazwę pliku: unikaj znaków specjalnych, spacji i cyrylicy w nazwie. Dobry format: product-banner-01.jpg.
2.4. Skompresuj obraz
Rozmiar pliku może trafiać na limit hostingu. Nawet jeśli upload_max_filesize jest ustawiony hojnie, niektórzy dostawcy przycinają bufory na niższych wartościach. Skompresuj grafikę: dla JPEG przez Imagify lub TinyPNG, dla PNG przez Squoosh.

Przy okazji sprawdź format: jeśli przesyłasz .png, spróbuj przekonwertować na .jpg i odwrotnie. Czasem problem jest związany z konkretnym formatem i wersją biblioteki PHP GD lub Imagick.
2.5. Dezaktywuj wtyczki i zmień motyw
Wtyczki bezpieczeństwa, Wordfence, Solid Security, Sucuri, oraz optymalizacji obrazów mogą przechwytywać przesyłanie i powodować konflikt. Tymczasowo wyłącz WSZYSTKIE wtyczki i przełącz się na standardowy motyw, Twenty Twenty-Five lub dowolny inny motyw domyślny. Sprawdź przesyłanie. Jeśli zadziała, włączaj wtyczki pojedynczo, aby znaleźć winowajcę.
2.6. Zwiększ limit pamięci PHP
Proces PHP przetwarzający obraz zużywa pamięć. Dla zrzutu ekranu Full HD w JPEG może nie wystarczyć nawet 64 MB. Dodaj w wp-config.php przed linią /* That's all, stop editing! */:
1 define( 'WP_MEMORY_LIMIT', '256M' );
2.7. Zaktualizuj wersję PHP
Na rok 2026 WordPress zaleca PHP 8.3 jako wersję minimalną, optymalnie PHP 8.4 lub 8.5. Na wersjach 7.4 i niższych działanie biblioteki mediów nie jest gwarantowane. Ścieżka w cPanel: sekcja „Oprogramowanie" → „Wybierz wersję PHP" → przełącz na 8.4 lub 8.5.

2.8. Wyłącz ModSecurity
ModSecurity, zapora aplikacyjna na poziomie serwera WWW, czasem uznaje przesłanie obrazu za atak. Dodaj w .htaccess (w katalogu głównym witryny):
1 <IfModule mod_security.c> 2 SecFilterEngine Off 3 SecFilterScanPOST Off 4 </IfModule>
Nie pomogło, proszę przywrócić te linie: problem nie leży w ModSecurity.
2.9. Proszę przełączyć WordPress z Imagick na GD Library
WordPress używa Imagick (jeśli moduł jest zainstalowany na serwerze) lub GD Library do przetwarzania obrazów. Imagick daje wyższą jakość, ale zużywa więcej pamięci. Jeśli WP_MEMORY_LIMIT nie pomógł, proszę wymusić przełączenie WordPress na GD. Proszę dodać w functions.php aktywnego motywu:
1 function wpb_image_editor_default_to_gd( $editors ) { 2 $gd_editor = 'WP_Image_Editor_GD'; 3 $editors = array_diff( $editors, array( $gd_editor ) ); 4 array_unshift( $editors, $gd_editor ); 5 return $editors; 6 } 7 add_filter( 'wp_image_editors', 'wpb_image_editor_default_to_gd' );
Po tym WordPress ustawia GD Library jako pierwszą w kolejności, a Imagick używa jako fallback.
2.10. Proszę zainstalować Add From Server, alternatywny sposób przesyłania
Jeśli błąd HTTP nie znika, a plik trzeba przesłać pilnie, proszę wgrać go na serwer przez FTP do dowolnego folderu i zaimportować do biblioteki mediów przez Add From Server. Wtyczka pobiera pliki bezpośrednio z systemu plików, z pominięciem standardowego uploadera WordPress, działają pliki dowolnego rozmiaru, ograniczone jedynie przestrzenią dyskową taryfy.
2.11. Proszę skontaktować się z dostawcą hostingu
Jeśli wypróbowali Państwo wszystko, proszę napisać do wsparcia hostingu. Proszę opisać błąd, dołączyć zrzut ekranu, podać wersję PHP i WordPress. Często problem jest rozwiązywany po stronie serwera: pomoc techniczna poprawia php.ini, zdejmuje blokadę ModSecurity lub restartuje PHP-FPM.
3. Proszę poprawić błąd „Missing a temporary folder"
Błąd „Missing a temporary folder" blokuje nie tylko przesyłanie obrazów, ale także instalację wtyczek i aktualizację WordPressa. Przyczyna: PHP nie może znaleźć katalogu tymczasowego lub nie może do niego zapisać.
Rozwiązanie: jawnie wskazać WordPressowi ścieżkę do folderu tymczasowego. Proszę otworzyć wp-config.php i dodać przed ostatnią linią:
1 define( 'WP_TEMP_DIR', dirname( __FILE__ ) . '/wp-content/temp/' );
Proszę zapisać plik. Następnie przez FTP lub cPanel File Manager proszę utworzyć folder temp wewnątrz /wp-content/ (jeśli go nie ma). Uprawnienia do folderu: 755. Proszę wrócić do panelu administracyjnego i ponownie spróbować przesłać plik.
4. Proszę zwiększyć limit rozmiaru pliku do przesłania
Błąd „Uploaded file exceeds the upload_max_filesize directive" oznacza, że plik jest zbyt duży dla bieżących ustawień PHP. Trzy sposoby naprawy, od najprostszego do serwerowego.
4.1. Przez.htaccess
Proszę dodać w .htaccess (katalog główny witryny):
1 php_value upload_max_filesize 256M
Jeśli błąd się powtórzy, proszę dodać zaraz potem:
1 php_value post_max_size 256M 2 php_value memory_limit 512M 3 php_value max_input_time 180 4 php_value max_execution_time 180
4.2. Przez wp-config.php
Proszę dodać w wp-config.php przed ostatnią linią:
1 @ini_set( 'upload_max_filesize', '256M' ); 2 @ini_set( 'post_max_size', '256M' );
4.3. Przez php.ini
Proszę znaleźć php.ini na serwerze; ścieżka zależy od hostingu, zazwyczaj /etc/php/8.4/cli/php.ini lub konfiguruje się ją w cPanel (sekcja „Select PHP Version" → „Switch to PHP Options"). Proszę otworzyć, znaleźć dyrektywę upload_max_filesize i zastąpić wartość:
1 upload_max_filesize = 256M 2 post_max_size = 256M
Proszę zapisać i zrestartować PHP, przez cPanel lub poleceniem w SSH. Jeśli nie ma Pan/Pani dostępu do php.ini, proszę skontaktować się z pomocą techniczną hostingu.
5. Rozwiązania specyficzne dla GoDaddy i DreamHost
GoDaddy
Na hostingu współdzielonym GoDaddy błąd HTTP często jest związany z kolejnością bibliotek przetwarzania obrazów. Proszę dodać w functions.php aktywnego motywu:
1 add_filter( 'wp_image_editors', 'change_graphic_lib' ); 2 function change_graphic_lib( $array ) { 3 return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' ); 4 }
Kod wymusza ustawienie GD Library jako pierwszej, co rozwiązuje większość przypadków błędu HTTP właśnie na GoDaddy.
DreamHost
Na DreamHost błąd jest zwykle związany z konfliktem wtyczek lub motywów. W pierwszej kolejności proszę dezaktywować wszystkie wtyczki i przełączyć się na standardowy motyw. Proszę usunąć nieużywane motywy i wtyczki, mogą one pozostawiać martwe hooki, które zakłócają działanie uploadera. Jeśli to nie pomoże, proszę skontaktować się z pomocą techniczną DreamHost: mają niestandardową konfigurację serwera, a support zna specyfikę.
Co robić, jeśli błąd powtarza się raz za razem
Jeśli przeszedł Pan/Pani cały łańcuch, a przesyłanie i tak pada raz w tygodniu, problem jest głębszy niż uprawnienia dostępu czy limit PHP. Najprawdopodobniej winny jest hosting z twardymi ograniczeniami serwerowymi (tani plan współdzielony) lub źle napisana wtyczka, która nadpisuje ustawienia uploadera mediów przy każdej aktualizacji.
W pierwszej kolejności proszę wykluczyć wtyczki: proszę wyłączyć wszystko na dobę i obserwować zachowanie uploadera. Jeśli przez dobę nie będzie żadnej awarii, proszę włączać wtyczki pojedynczo w odstępie dnia, aż znajdzie Pan/Pani winowajcę.
Jeśli się nie znajdzie, proszę zmienić hosting. Poważnie. Tanie plany współdzielone oszczędzają na pamięci PHP i przycinają bufory tak, że żadne poprawki .htaccess nie pomogą. Do stabilnej pracy WordPressa z plikami medialnymi potrzebny jest VPS lub dobry hosting zarządzany z memory_limit od 256M i max_execution_time od 120 sekund.
Alternatywna ścieżka obejścia: przesyłać obrazy przez FTP i importować przez Add From Server. Wolniej niż natywny uploader, ale działa na każdym hostingu i nie zależy od limitów PHP.
⁉️🤔 Często zadawane pytania
Dlaczego błąd przesyłania pojawia się bez widocznej przyczyny?
Dostawcy hostingu regularnie aktualizują oprogramowanie serwerowe: drobne łatki PHP, Apache, konfigurację ModSecurity. Zmieniają się ścieżki, wersje, ustawienia, a uprawnienia dostępu do
/wp-content/uploads/znikają. Nic Pan/Pani nie ruszał/a, a przesyłanie przestało działać. Rozwiązanie: ponownie nadać uprawnienia 744/755 na folder i 644 na pliki wewnątrz/wp-content/uploads/oraz sprawdzić limity PHP.
Co robić, jeśli nic z artykułu nie pomogło?
Proszę włączyć
WP_DEBUGwwp-config.php:define( 'WP_DEBUG', true );i powtórzyć przesyłanie. WordPress zapisze konkretny błąd w/wp-content/debug.log. Zobaczy Pan/Pani dokładny PHP fatal lub warning: najczęściej brak pamięci (allowed memory size exhausted), niedostępność folderu tymczasowego (failed to open dir) lub konflikt konkretnej wtyczki. Z tą informacją pomoc techniczna hostingu rozwiąże problem wielokrotnie szybciej.
Jak przesłać bardzo duży plik, jeśli hosting nie pozwala podnieść limitu?
Proszę użyć FTP + wtyczki Add From Server. Proszę przesłać plik na serwer ręcznie przez FTP do folderu
/wp-content/uploads/import/(lub dowolnego innego), a następnie zaimportować go do biblioteki mediów przez wtyczkę. Add From Server pobiera pliki bezpośrednio z systemu plików serwera, z pominięciem uploadera HTTP i wszystkich jego limitów. Działa dla plików dowolnego rozmiaru, jedynym ograniczeniem jest przestrzeń dyskowa planu. Do przesyłania wsadowego proszę utworzyć folder/wp-content/uploads/bulk-import/i wgrać tam wszystko naraz przez FTP.
Czy można na zawsze zapobiec błędowi przesyłania obrazów?
Całkowicie wykluczyć się nie da, ale ryzyko spada do minimum. Proszę trzymać PHP na aktualnej wersji, 8.4 lub 8.5 w 2026 roku,
memory_limitnie mniej niż 256M. Nie instalować wtyczek bezpieczeństwa z agresywnymi ustawieniami domyślnymi. Raz na pół roku sprawdzać uprawnienia do/wp-content/uploads/. Po każdej aktualizacji rdzenia WordPressa lub PHP wykonywać testowe przesłanie obrazu. Skonfigurowany automatyczny backup, przywracanie zajmie 5 minut. I mieć pod ręką dostęp FTP: bez niego połowa rozwiązań z tego artykułu jest niedostępna.
Czy koniecznie trzeba używać FTP do poprawiania uprawnień dostępu?
Nie. Alternatywa: File Manager w cPanel (lub odpowiedniku Państwa hostingu). Proszę wejść do File Manager →
/wp-content/→ kliknąć prawym przyciskiem folderuploads→ Change Permissions → ustawić 744. Logika ta sama, interfejs nieco inny. cPanel File Manager działa z uprawnieniami dokładnie tak samo jak klient FTP: wszystko robi się w przeglądarce, osobne oprogramowanie nie jest potrzebne. Dla użytkowników, którym klient FTP wydaje się skomplikowany, to najprzystępniejszy sposób na poprawienie uprawnień w dwie minuty.
Błąd przesyłania naprawiony, co dalej?
Przeszedł Pan/Pani łańcuch, przesyłanie działa. Teraz profilaktyka, żeby nie wracać do tego problemu za miesiąc. Trzy rzeczy, które warto zrobić od razu:
- Proszę zapisać działające ustawienia. Te uprawnienia (744/755), limity PHP (256M), wersja PHP (8.4+), proszę zachować w notatkach. Podczas następnej migracji lub aktualizacji serwera odtworzy je Pan/Pani w minutę, a nie w godzinę prób.
- Proszę skonfigurować monitorowanie przestrzeni dyskowej. Połowa „nagłych" błędów przesyłania to brak miejsca na dysku. WordPress po cichu odmawia zapisu, a Pan/Pani się głowi. Darmowe wtyczki, takie jak WP Health, sprawdzają wolne miejsce i wysyłają powiadomienia na e-mail, zanim dysk się zapełni.
- Proszę sprawdzać logi raz w miesiącu.
/wp-content/debug.log(jeśli włączonoWP_DEBUG) pokaże rodzący się problem na długo przed tym, zanim stanie się blokujący. Kilka minut miesięcznie oszczędza godziny nieplanowanej naprawy.
Zostały pytania lub napotkał Pan/Pani nietypowy przypadek? Proszę opisać sytuację w komentarzach, rozwiążemy to.



