Jak naprawić błąd "The uploaded file exceeds upload_max_filesize"

Spis treści

Wprowadzenie – Przyczyny błędu rozmiaru pliku

Błąd "The uploaded file exceeds upload_max_filesize" to jeden z najczęstszych problemów spotykanych przez użytkowników WordPress podczas przesyłania plików. Ten komunikat pojawia się, gdy próbujemy wgrać plik większy niż dopuszczalny limit określony w konfiguracji serwera.

Domyślne limity PHP często wynoszą zaledwie 2 MB lub 8 MB, co jest niewystarczające dla współczesnych potrzeb – duże obrazy, pliki wideo, dokumenty PDF czy paczki z motywami mogą łatwo przekroczyć te ograniczenia. Na szczęście istnieje kilka skutecznych metod zwiększenia tych limitów.

W tym przewodniku przeprowadzę Cię przez wszystkie dostępne sposoby modyfikacji limitów przesyłania plików, od najprostszych rozwiązań po zaawansowane techniki konfiguracyjne.

Zrozumienie dyrektyw PHP upload_max_filesize i post_max_size

Zanim przejdziemy do rozwiązań, kluczowe jest zrozumienie dwóch głównych dyrektyw PHP, które kontrolują limity przesyłania plików:

upload_max_filesize

Ta dyrektywa określa maksymalny rozmiar pojedynczego pliku, który można przesłać na serwer. Jest to bezpośrednia przyczyna pojawienia się komunikatu o błędzie.

post_max_size

Ta dyrektywa określa maksymalny rozmiar całych danych POST, które mogą zostać przesłane. Musi być zawsze większa lub równa upload_max_filesize, ponieważ oprócz samego pliku, w danych POST mogą znajdować się również inne informacje.

Ważne zasady konfiguracji:

  • post_max_size ≥ upload_max_filesize – zawsze ustawiaj post_max_size na wartość równą lub większą niż upload_max_filesize
  • memory_limit ≥ post_max_size – pamięć RAM powinna być wystarczająca do przetworzenia przesłanych danych
  • max_execution_time – czas wykonywania skryptu musi być wystarczająco długi dla dużych plików
  • max_input_time – czas na przetworzenie danych wejściowych

Metody modyfikacji limitów plików

WordPress i serwer WWW oferują kilka różnych sposobów modyfikacji limitów przesyłania plików. Wybór odpowiedniej metody zależy od dostępu do serwera i poziomu uprawnień:

Hierarchia metod (od najprostszej do najtrudniejszej):

  1. Panel hostingowy (cPanel, DirectAdmin, Plesk) – najprostsza metoda dla użytkowników hostingu współdzielonego
  2. Plik .htaccess – działa na serwerach Apache z włączonym modułem mod_php
  3. Plik functions.php motywu – metoda specyficzna dla WordPress
  4. Plik php.ini – wymaga dostępu do konfiguracji PHP
  5. Plik .user.ini – alternatywa dla php.ini na niektórych hostingu

Konfiguracja php.ini

Plik php.ini to główny plik konfiguracyjny PHP, który pozwala na precyzyjne dostosowanie wszystkich parametrów języka. Modyfikacja tego pliku daje najwięcej kontroli nad limitem przesyłania plików.

Lokalizacja pliku php.ini:

  • Hosting współdzielony: często dostępny przez panel hostingowy lub w głównym katalogu
  • Serwer VPS/dedykowany: zazwyczaj w /etc/php/[wersja]/apache2/php.ini lub /etc/php/[wersja]/cli/php.ini
  • Localhost: w folderze instalacji PHP (np. C:/php/php.ini)

Rekomendowane ustawienia dla większości stron WordPress:

  • upload_max_filesize = 64M – pozwala na przesyłanie plików do 64 MB
  • post_max_size = 128M – podwójna wartość dla bezpieczeństwa
  • memory_limit = 256M – wystarczająca pamięć dla operacji na plikach
  • max_execution_time = 300 – 5 minut na przetwarzanie
  • max_input_time = 300 – 5 minut na odbieranie danych

Procedura modyfikacji:

  1. Zlokalizuj plik php.ini
  2. Utwórz kopię zapasową oryginalnego pliku
  3. Zmodyfikuj odpowiednie dyrektywy
  4. Zrestartuj serwer Apache/PHP
  5. Sprawdź efekty w panelu WordPress

Modyfikacja .htaccess

Plik .htaccess to specjalny plik konfiguracyjny serwera Apache, który pozwala na zmianę ustawień dla konkretnego katalogu. Jest to często najprostsza metoda dla użytkowników hostingu współdzielonego.

Dodanie dyrektyw do pliku .htaccess:

W głównym katalogu WordPress znajdź plik .htaccess i dodaj na jego końcu następujące linie:

Podstawowa konfiguracja:

  • php_value upload_max_filesize 64M
  • php_value post_max_size 128M
  • php_value memory_limit 256M
  • php_value max_execution_time 300
  • php_value max_input_time 300

Ważne uwagi:

  • Upewnij się, że mod_php jest włączony – dyrektywy php_value działają tylko z mod_php
  • Nie edytuj sekcji WordPress – dodaj nowe dyrektywy po istniejących regułach WordPress
  • Testuj po każdej zmianie – błąd w .htaccess może spowodować błąd 500
  • Uprawnienia pliku – .htaccess powinien mieć uprawnienia 644

Alternatywa dla serwerów LiteSpeed:

Jeśli używasz serwera LiteSpeed, możesz potrzebować dodatkowej dyrektywy:

  • Litespeed php_value upload_max_filesize 64M

Użycie funkcji WordPress

WordPress oferuje wbudowane funkcje, które pozwalają na modyfikację limitów przesyłania plików bez bezpośredniej ingerencji w pliki konfiguracyjne serwera.

Metoda 1: functions.php motywu

Dodaj następujący kod do pliku functions.php swojego motywu (potomek jest zalecany):

Kod do dodania:

  • @ini_set('upload_max_filesize', '64M');
  • @ini_set('post_max_size', '128M');
  • @ini_set('max_execution_time', '300');

Metoda 2: Filtry WordPress

WordPress udostępnia specjalne filtry, które pozwalają na modyfikację limitów:

Filtr upload_size_limit:

Ten filtr pozwala na zmianę limitu wyświetlanego w mediach WordPress:

  • function custom_upload_size_limit($size) { return 64 * 1024 * 1024; }
  • add_filter('upload_size_limit', 'custom_upload_size_limit');

Metoda 3: Wtyczki zwiększające limity

Jeśli nie czujesz się komfortowo z edycją kodu, możesz użyć dedykowanych wtyczek:

Popularne wtyczki:

  • Increase Max Upload Filesize – prosta wtyczka do modyfikacji limitów
  • WP Maximum Upload File Size – pozwala na zmianę limitów z panelu
  • Big File Uploads – zaawansowane opcje dla dużych plików

Jeśli interesuje Cię szersze spojrzenie na problemy z przesyłaniem plików, polecam przeczytać artykuł: WordPress nie pozwala wgrać większych plików – ograniczenia uploadu, gdzie znajdziesz więcej szczegółów na temat różnych metod rozwiązywania problemów z uploadem.

Alternatywne metody przesyłania dużych plików

Czasami modyfikacja limitów serwera nie jest możliwa lub niewystarczająca. W takich przypadkach warto rozważyć alternatywne metody przesyłania dużych plików.

Metoda 1: Przesyłanie przez FTP/SFTP

Zamiast używać panelu WordPress, możesz przesłać duże pliki bezpośrednio przez klienta FTP:

Kroki przesłania przez FTP:

  1. Połącz się z serwerem przez klienta FTP (FileZilla, WinSCP)
  2. Przejdź do katalogu wp-content/uploads
  3. Utwórz odpowiedni folder (np. 2025/03)
  4. Prześlij pliki do odpowiedniego katalogu
  5. Zaloguj się do WordPress i dodaj pliki do biblioteki mediów

Metoda 2: Użycie wtyczek do przesyłania

Specjalistyczne wtyczki mogą ominąć niektóre limity serwera:

Rekomendowane wtyczki:

  • WP File Upload – zaawansowane opcje przesyłania
  • FileBird – menedżer plików z dodatkowymi funkcjami
  • Media Library Assistant – rozszerzona biblioteka mediów

Metoda 3: Przesyłanie przez chmurę

Dla bardzo dużych plików rozważ usługi chmurowe:

Integracja z usługami chmurowymi:

  • Google Drive – przesyłanie i osadzanie plików
  • Dropbox – udostępnianie plików na stronie
  • Amazon S3 – profesjonalne przechowywanie plików

Optymalizacja przesyłania plików

Zwiększenie limitów to tylko część rozwiązania. Równie ważna jest optymalizacja procesu przesyłania, aby zapewnić stabilność i szybkość.

Optymalizacja obrazów przed przesłaniem:

Zamiast przesyłać ogromne pliki, zoptymalizuj je wcześniej:

Narzędzia do optymalizacji:

  • TinyPNG/TinyJPG – bezstratna kompresja
  • ImageOptim – optymalizacja na macOS
  • Caesium Image Compressor – darmowa alternatywa
  • Adobe Photoshop – zapis dla webu

Formaty plików:

Wybieraj odpowiednie formaty dla różnych typów treści:

Rekomendacje formatów:

  • Obrazy: WebP, JPEG 2000, AVIF (nowoczesne formaty)
  • Grafika wektorowa: SVG (zamiast PNG)
  • Dokumenty: PDF z kompresją
  • Wideo: MP4 z H.264/H.265

Podział dużych plików:

Dla bardzo dużych plików rozważ podział na mniejsze części:

Metody podziału:

  • Archiwa ZIP/RAR – podział na części
  • 7-Zip – zaawansowane opcje kompresji
  • HJSplit – dedykowane narzędzie do podziału plików

Testowanie poprawności po zmianach

Po wprowadzeniu zmian w konfiguracji serwera kluczowe jest dokładne przetestowanie, czy wszystkie modyfikacje działają poprawnie.

Metoda 1: Sprawdzenie w panelu WordPress

Najprostszy sposób to sprawdzenie informacji o mediach:

Kroki weryfikacji:

  1. Zaloguj się do panelu administracyjnego WordPress
  2. Przejdź do Media → Dodaj nowy
  3. Sprawdź komunikat o maksymalnym rozmiarze pliku
  4. Przetestuj przesyłanie pliku o rozmiarze bliskim limitowi

Metoda 2: Użycie phpinfo()

Sprawdzenie aktualnych ustawień PHP:

Tworzenie pliku testowego:

  1. Utwórz plik test.php w głównym katalogu
  2. Dodaj kod: phpinfo();
  3. Otwórz plik w przeglądarce
  4. Znajdź dyrektywy upload_max_filesize i post_max_size
  5. Usuń plik test.php po sprawdzeniu

Metoda 3: Testowanie rzeczywistych plików

Praktyczny test z różnymi typami plików:

Scenariusze testowe:

  • Obraz 10 MB – test podstawowy
  • Dokument PDF 25 MB – test średnich plików
  • Pakiet 50 MB – test dużych plików
  • Wiele plików jednocześnie – test post_max_size

Metoda 4: Monitorowanie logów

Sprawdzenie logów serwera w razie problemów:

Lokalizacje logów:

  • Apache: /var/log/apache2/error.log
  • Nginx: /var/log/nginx/error.log
  • PHP: /var/log/php_errors.log
  • Panel hostingowy: sekcja logi błędów

Podsumowanie – Bezproblemowe przesyłanie plików

Rozwiązanie problemu z limitem rozmiaru plików w WordPress wymaga zrozumienia kilku kluczowych koncepcji i zastosowania odpowiednich metod. Pamiętaj o tych najważniejszych zasadach:

Checklista optymalnej konfiguracji:

Podstawowe ustawienia:

  • Zwiększ upload_max_filesize do minimum 64 MB
  • Ustaw post_max_size na podwójną wartość upload_max_filesize
  • Zwiększ memory_limit do co najmniej 256 MB
  • Dostosuj czas wykonywania skryptów dla dużych plików

Bezpieczeństwo:

  • Nie ustawiaj zbyt wysokich limitów bez potrzeby
  • Monitoruj wykorzystanie zasobów serwera
  • Stosuj ograniczenia dla różnych typów użytkowników
  • Regularnie czyść niepotrzebne pliki

Wydajność:

  • Optymalizuj pliki przed przesłaniem
  • Używaj nowoczesnych formatów (WebP, AVIF)
  • Rozważ CDN dla dużych plików
  • Monitoruj czas przesyłania

Najczęstsze problemy i ich rozwiązania:

Problem #1: Zmiany w php.ini nie działają

Rozwiązanie: Sprawdź, czy edytujesz właściwy plik php.ini i zrestartuj serwer. Użyj phpinfo() do weryfikacji.

Problem #2: .htaccess powoduje błąd 500

Rozwiązanie: Upewnij się, że serwer używa mod_php. Sprawdź składnię i uprawnienia pliku.

Problem #3: Limity nadal zbyt niskie

Rozwiązanie: Skontaktuj się z administratorem hostingu. Niektóre serwery mają sztywne limity.

Problem #4: Przesyłanie nadal zawodzi

Rozwiązanie: Sprawdź inne limity – max_execution_time, memory_limit, max_input_time.

Podsumowanie

Skuteczne zarządzanie limitami przesyłania plików to kluczowa umiejętność każdego administratora WordPress. Prawidłowo skonfigurowane limity zapewniają elastyczność w zarządzaniu treścią, jednocześnie utrzymując stabilność i bezpieczeństwo serwera.

Pamiętaj – zawsze testuj zmiany na środowisku deweloperskim przed wdrożeniem na produkcji. Odpowiednio dobrane limity to kompromis między funkcjonalnością a wydajnością.

Jeśli chcesz dowiedzieć się więcej o optymalizacji mediów w WordPress, polecam nasz artykuł o czyszczeniu i optymalizacji katalogu uploads, który zawiera dodatkowe wskazówki dotyczące zarządzania plikami.

Masz problemy z konfiguracją limitów przesyłania plików? Chętnie pomożemy Ci wdrożyć optymalne ustawienia dla Twojej strony WordPress, które pozwolą na bezproblemowe przesyłanie plików o dowolnym rozmiarze. Skontaktuj się z nami, aby uzyskać profesjonalne wsparcie w konfiguracji serwera.